Важно, чтобы обработчик вызывался самым первым, чтобы никто не успел до него внести изменения в DOM. Тогда размеры и координаты элементов будут браться максимально быстро — из кеша. Поэтому, следующим шагом мы пробегаемся по всем интересным нам элементам и получаем их габариты.
Вроде бы самый сомнительный пункт. Если дом уже инвалидирован к моменту исполнения первого колбэка, то запрашивая баунд рект мы сделаем полный цикл рендера, а последующий колбэк из раф очереди затрэшит всю эту работу установкой какой-нибудь трансформы для анимации.
Это может работать только, если все действия с домом выполняются на уровне фреймворка и никто кроме фреймворка не трогает дом и не лезет в раф.
Это далеко не так. Вы не сможете просто выкинуть React в любом проекте и заменить его на Preact. Все таки 30кб эвент системы и других хаков для конкретных браузеров в реакте написано не зря. Если вы разрабатываете только под какой-нибудь хром одной из последних версий, то тогда вполне возможно все пройдет хорошо. Но если задействованы ие11 или мобильный сафари, то 99% у вас будут проблемы не только с переходом между библиотеками, но даже в рамках самого Preact вам придется написать несколько уравнивающих для каждого браузера костылей.
Не уловил как шарятся зависимости между виджетами? Если например 2 разных виджета используют реакт, то каждый из них загрузит свой?
Вроде бы самый сомнительный пункт. Если дом уже инвалидирован к моменту исполнения первого колбэка, то запрашивая баунд рект мы сделаем полный цикл рендера, а последующий колбэк из раф очереди затрэшит всю эту работу установкой какой-нибудь трансформы для анимации.
Это может работать только, если все действия с домом выполняются на уровне фреймворка и никто кроме фреймворка не трогает дом и не лезет в раф.
Возможно я где-то не прав.
Какая альтернатива? Я не знаю способа который бы не подождал по функции на инстанс и мог привязать контекст к колбэку.
Проблема наследования решается точечно и на моей практике возникает очень редко как и описанная проблема тестирования.