169 похожих чатов

В Svelte нет наследования, и по большей части я с

этим согласен.
Говорят (https://youtu.be/4mdNDavIGpc?t=2347),
наследование заменяется композицией компонентов...


Я делаю обертку для библиотеки на Svelte
С пропсами, и событиями все отлично:
почти красиво вышло, по аналогии:
https://ru.svelte.dev/examples#event-forwarding

А как быть экспортными функциями?

3 ответов

15 просмотров

А точнее?

Pavel 🦇 Malyshev
А точнее?

Все классы либы наследуются от некого Observable. Таким образов у всех потомков есть события change и error. С событиями почти все решается тремя строчками кода: дополнение списка событий недостающими, подписка на список событий при создании компоненты и отписка при уничтожении. Утилиты рулят, хотя эти три строчки приходится дублировать во всех комопнентах (пока только тех, где это нужно уже сейчас, а просто в теории). Но есть методы, типа changed и dispatchEvent, scale, simplify, transform, translate и т.д. с переменным числом параметров. Не все преобразования данных можно повторить, а затем предать измененные данные в компонент. И потом, много времени уходит внутри либы на перевод из входного формата во внутренний и перерисовку (в некоторых случаях объект либы пересоздается, т.к. изменение не всех параметром предусмотрено после создания экземпляра) - использование этих функций дает значительное ускорение. Описание каждой из функций, это примерно три строчки: `export function simplify( arg0, arg1, arg2, arg3 ) { return _unit.simplify( arg0, arg1, arg2, arg3 ); }` И так 5-10 раз в 20-30 компонентах... иногда с добавлением каких-то проверок или ожидания. Этим методы нужны для решения задач. Они занимают вроде бы не много места, зато дублируются в паре десятков компонентов... Можно вставлять в слот доп.комопнент, отвечающий за вызов той или иной функции родителя. Но не все функции обратимы, и, казалось бы логичная отмена функции удалением из слота не всегда возможна, либо требует дополнительного расхода памяти для хранения исходного состояния данных. Да и просто странным выглядит вызов функции компонента генерацией вложенного компонента, ведь бывает нужно вызвать одну функцию, а бывает нужна последовательнось, при том что некоторые завершаются не синхронно... за несколько часов работы получится длинная портянка вложенных компонентов. Можно обойтись и одним копонентом, если забить на обратимость функции, как при вызове экспортной функции и даже ловить return через событие... Такая схема сильно усложняет код. Есть мнение, что нужно написать одну функцию, аля getUnit - возвращающею экземпляр созданного в компоненте объекта либы и дальше в коде творить все что вздумается, но опять же эту функцию требуется повторить в каждом помпоненте-обертке... а хотелось бы написать один раз и унаследовать... Т.е. в идеале нужно что бы у всех копонент экспортировалась минимум одна, одна и та же (возвращающая экземпляр объекта созданного в компоненте) , функция, а при onMount / onDestroy дергались функции подписки и отписки от событий... Это легко решается наследованием, но его нет... А как это решить композицией компонентов?

Евгений Гуреев ☭ Гуреев ☭
Все классы либы наследуются от некого Observable. ...

если это код из свелт компонента, тогда почему бы не делать ре-экспорт просто?

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта