ли получится. Это из разряда, у меня для вас есть классы, но я вам их не отдам.
1. Переопределение конструктора. Сколько можно уже такое делать
2. Деструктор/cleanup выносится в отдельную функцию из класса… Имопртируется какое-то непонятный registerDestructor. Зачем мне эти детали?
3. Никаких предустановленных полей, сам пиши каждый раз this.element = element и всю прочую ерунду. Очищай предыдущий стейт в modify тем же самым cleanup…
4. еще вишенка в том, для трэканья параметров я его должен явно указать в аргументах modify…
Наверное ребята писали ember-modifier для универсального использования не только в Ember, но и в Glimmer. registerDestructor используется потому что у Ember runloop со своей стадией destroy. Подключают его в конструкторе, потому что а где его еще подключать, конструктор самое подходящее место. cleanup снаружи класса модифаера просто для примера, можно написать и как метод. А про передачу аргумента, ну так реактивность работает
Реактивность в компонентах работает и без этого прекрасно. Что мешало оставить как было и иметь this.args + didUpdate? Переопределение конструктора и вызов super это отвратительная практика. Можно было определить метод в родительском классе, как, собственно, и было раньше с willDestroy. Cleanup «не снаружи» делается со всякими bind this и т.д, так ведь? Неспроста они это в примере вынесли. Можно, конечно, написать свой modifier класс базовый, но это же немного противоречит концепции convention over configuration. Да и некоторые проблемы не исправит.
Обсуждают сегодня