Перейти к основному содержимому

Обзор Behaviors

Behaviors добавляют реактивную логику в формы: вычисляемые поля, условную видимость, синхронизацию полей.

Что такое Behaviors?

Behaviors автоматически реагируют на изменения в форме:

import { GroupNode } from '@reformer/core';
import { computeFrom, enableWhen } from '@reformer/core/behaviors';

const form = new GroupNode({
form: {
price: { value: 100 },
quantity: { value: 1 },
total: { value: 0 },
discount: { value: 0 },
showDiscount: { value: false },
},
behavior: (path) => {
// Автовычисление total
computeFrom([path.price, path.quantity], path.total, ({ price, quantity }) => price * quantity);

// Условное включение поля скидки
enableWhen(path.discount, (form) => form.total > 500);
},
});

Доступные Behaviors

BehaviorОписание
computeFromВычисление поля из других полей
transformValueТрансформация значения при изменении
enableWhenУсловное включение/отключение
resetWhenСброс поля по условию
copyFromКопирование значения из другого поля
syncFieldsДвусторонняя синхронизация
watchFieldРеакция на изменения поля
revalidateWhenЗапуск повторной валидации

Как работают Behaviors

  1. Определяются в behavior
  2. ReFormer настраивает реактивные подписки
  3. При изменении исходных полей behavior выполняется автоматически
// Когда price или quantity меняется → total обновляется
computeFrom(
[path.price, path.quantity], // Отслеживать эти
path.total, // Обновить это
({ price, quantity }) => price * quantity // Этой функцией
);

Behavior vs Validation

АспектВалидацияBehavior
ЦельПроверка корректностиРеакция на изменения
РезультатОшибкиПобочные эффекты
ПримерыRequired, формат emailВычисляемый total, show/hide

Следующие шаги