logologo
Начало
Руководство
Разработка
Плагины
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Начало
Руководство
Разработка
Плагины
API
logologo

Введение

Что такое FlowEngine?
Связь FlowEngine и плагинов
Быстрый старт
План обучения

Руководство

Регистрация FlowModel
Создание FlowModel
Рендеринг FlowModel
Поток событий и конфигурация FlowModel
Персистентность FlowModel
Жизненный цикл FlowModel
Система контекста FlowModel
Реактивный механизм: Observable
FlowModel vs React.Component

Определения

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageСистема контекста FlowModel
Next PageFlowModel vs React.Component
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Механизм реактивности: Observable

INFO

Механизм реактивности Observable в NocoBase по своей сути похож на MobX. Текущая базовая реализация использует @formily/reactive, и её синтаксис и концепции полностью совместимы с MobX. Прямое использование MobX не было применено только по историческим причинам.

В NocoBase 2.0 объекты реактивности Observable встречаются повсеместно. Они являются ядром базового потока данных и отзывчивости пользовательского интерфейса, широко применяясь в таких компонентах, как FlowContext, FlowModel и FlowStep.

#Почему стоит выбрать Observable?

NocoBase выбрал Observable вместо других решений для управления состоянием, таких как Redux, Recoil, Zustand и Jotai, по следующим основным причинам:

  • Максимальная гибкость: Observable может сделать любой объект, массив, Map, Set и т.д. реактивным. Он изначально поддерживает глубокую вложенность и динамические структуры, что делает его очень подходящим для сложных бизнес-моделей.
  • Невмешательство: Вы можете напрямую манипулировать исходным объектом, не определяя экшены (actions), редьюсеры (reducers) или дополнительные хранилища (stores), что обеспечивает превосходный опыт разработки.
  • Автоматическое отслеживание зависимостей: Обернув компонент с помощью observer, он автоматически отслеживает используемые свойства Observable. При изменении данных пользовательский интерфейс обновляется автоматически, без необходимости ручного управления зависимостями.
  • Применимость вне React: Механизм реактивности Observable применим не только в React, но также может быть объединен с другими фреймворками для удовлетворения более широкого спектра потребностей в реактивных данных.

#Зачем использовать observer?

observer отслеживает изменения в объектах Observable и автоматически запускает обновления React-компонентов при изменении данных. Это позволяет поддерживать синхронизацию вашего пользовательского интерфейса с данными, без необходимости вручную вызывать setState или другие методы обновления.

#Базовое использование

import React from 'react';
import { Input } from 'antd';
import { observer, observable } from '@nocobase/flow-engine';

const obs = observable.deep({
  value: 'aa'
});

const MyComponent = observer(() => {
  return (
    <div>
      <Input
        defaultValue={obs.value}
        onChange={(e) => {
          obs.value = e.target.value;
        }}
      />
      <div>{obs.value}</div>
    </div>
  );
});

export default MyComponent;

Для получения дополнительной информации о реактивном использовании, пожалуйста, обратитесь к документации @formily/reactive.