React development kit
ART React позволяет работать с React компонентами в смешанном стиле - функционально-объектном.
Фреймворк не предоставляет свой набор компонентов. Он дает модель и паттерны, позволяющие абстрагировать любую React библиотеку компонентов.
В основе фреймворка лежит следующий принцип.
Виджет - это объект, а не функция или класс.
Виджеты существуют, имеют свой жизненный цикл, API по управлению и состояние.
Простые виджеты без конфигурации. Их рендеринг не зависит от значений, такие виджеты будут всегда
рендерится при вызове render метода.
Управляемые виджеты с конфигурацией и API. Управляемые виджеты будут рендерится только в следующих случаях:
Управляемые виджеты позволяют контролировать рендер компонента извне посредством API функций.
Дополнительно - рендер можно “приостановить” или “заблокировать” с помощью функций:
pause
continue
lock
В момент блокировки изменения свойств не вызовут рендеринг компонента. Тем самым становится возможным отобразить изменение группы свойств за одну операцию рендера
Фреймворк предоставляет следующий набор паттернов:
Идея паттерна - кеш для массива.
Паттерн представляет собой функцию со следующим поведением:
Идея паттерна - условный рендеринг.
Паттерн представляет собой виджет со следующим поведением:
widget
, cache
, persist
else
Паттерн является базовым классом для конфигураций управляемых виджетов.
Конфигурации - набор свойств, а также контейнеры для React Hooks.
Паттерн является базовым интерфейсом для виджетов-конфигураторов.
Идея паттерна - отложенный рендеринг.
Паттерн позволяет отложить создание React компонента до момента своего вызова.
Дополнительно - паттерн использует useMemo хук для предотвращения лишних вызовов рендера.
Идея паттерна - передача событий.
События могут быть обработаны handle
и вызваны execute
Идя паттерна - хранилище для React Hooks.
Паттерн позволяет обращаться к хукам до момента их выполнения.
Используется в тех случаях, когда необходимо обратиться к хуку на этапе создания или настройки виджета (до момента фактического рендера виджета и вызова хуков). Например, нам нужно повесить обработчик события клика на дочерний виджет, а в обработчике обратиться к хуку.
Паттерн позволяет создать виджет, который будет иметь доступ к результатам выполнения React Hooks.
Hooked виджеты инициализируются после выполнения хуков.
Методы регистрации виджета:
Паттерн - обертка над useMemo, задающий пустой массив в качестве зависимости
Идея паттерна - отложенная инициализация.
Паттерн используется для управления жизненный циклом компонента.
Паттерн - инвертирующий использование хука useMemo.
observe
- принимает на вход набор объектов, использующихся в качестве зависимостей useMemo.
render
- вызывается при срабатывании useMemo
Идея паттерна - опциональный рендеринг.
Паттерн представляет собой виджет со следующим поведением:
Идея паттерна - контролируемое свойство.
Паттерн предоставляет обертку над полем/свойством виджета.
Основной функционал:
get
- получение значенияset/=
- изменение значенияconsume
- подписка на изменениеprevent
- предотвращение измененияclear
- очистка cleared
- подписка на очисткуДополнительной особенностью паттерна является проверка значения на изменения.
Если новое значение свойство deep-equals предыдущему, то изменений не произойдет.
Идея паттерна - фабричный рендеринг.
Паттерн является универсальным компонентом для рендера компонентов - функций.
На вход передается фабрика компонента и вызов функции произойдет в момент mount-а Render компонента.
Идея паттерна - поток событий по сущностям.
Паттерн позволяет обрабатывать три операции по произвольным сущностям:
add
- сущность добавленияupdate
- сущность обновленияdelete
- сущность измененаПаттерн - обертка над useEffect с пустым массивом в качестве зависимостей
Идея паттерна - синхронизация множества действий с отложенным результатом
todo…
todo…
На текущий момент фреймворк поддерживает следующие библиотеки компонентов:
Планируется поддержка: