Разработка Component-компонентов
В NocoBase компоненты страниц, монтируемые через маршруты, — это обычные React-компоненты. Их можно писать прямо на React + Antd, как при обычной фронтенд-разработке.
Дополнительно NocoBase предоставляет:
observable+observer— рекомендуемый способ управления состоянием, лучше подходит для экосистемы NocoBase, чемuseStateuseFlowContext()— получение возможностей контекста NocoBase (запросы, интернационализация, маршрутная навигация и т.д.)
Базовый синтаксис
Простейший компонент страницы:
После написания зарегистрируйте его в load() пла гина через this.router.add(). Подробности см. в Router (Маршрутизация).
Управление состоянием: observable
В NocoBase для управления состоянием компонентов рекомендуется использовать observable + observer вместо React-овского useState. Преимущества:
- Прямое изменение свойств объекта вызывает обновление, не нужен
setState - Автоматическое отслеживание зависимостей: компонент перерисовывается только при изменении используемых свойств
- Соответствует реактивному механизму нижележащего слоя NocoBase (FlowModel, FlowContext и т.д.)
Базовое использование: создаёте реактивный объект через observable.deep(), оборачиваете компонент в observer(). И observable, и observer импортируются из @nocobase/flow-engine:
Предварительный просмотр:
Больше способов использования см. в Реактивный механизм Observable.
Использование useFlowContext
useFlowContext() — это точка входа для подключения возможностей NocoBase. Импортируется из @nocobase/flow-engine, возвращает объект ctx:
Ниже приведены примеры распространённых возможностей.
Отправка запросов
Через ctx.api.request() вызываются бэкенд-интерфейсы, использование совпадает с Axios:
Интернационализация
Через ctx.t() получаем переведённый текст:
Маршрутная навигация
Через ctx.router.navigate() выполняется переход между страницами:
Получение параметров текущего маршрута:
Получение имени текущего маршрута:
Подробнее про уровни логирования и использовани е см. в Context → Распространённые возможности.
Полный пример
Объединим observable, useFlowContext и Antd — компонент страницы, который получает данные с бэкенда и отображает их:
Что дальше
- Полные возможности, предоставляемые
useFlowContext— см. Context (Контекст) - Стилизация компонентов и кастомизация темы — см. Styles & Themes (Стили и темы)
- Если Ваш компонент должен появиться в меню «Добавить блок / поле / действие» NocoBase и поддерживать визуальную конфигурацию пользователем, нужно обернуть его в FlowModel — см. FlowEngine
- Не уверены, использовать Component или FlowModel? — см. Component vs FlowModel
Связанные ссылки
- Router (Маршрутизация) — регистрация маршрутов страниц, монтирование компонентов на URL
- Context (Контекст) — полное описание возможностей useFlowContext
- Styles & Themes (Стили и темы) — createStyles, токены темы и т.д.
- FlowEngine — используется FlowModel, когда нужна визуальная конфигурация
- Реактивный механизм Observable — управление реактивным состоянием в FlowEngine
- Context → Распространённые возможности — встроенные возможности ctx.api, ctx.t и т.д.
- Component vs FlowModel — выбор между компонентом и FlowModel

