Обзор 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
- Определяются в
behavior - ReFormer настраивает реактивные подписки
- При изменении исходных полей behavior выполняется автоматически
// Когда price или quantity меняется → total обновляется
computeFrom(
[path.price, path.quantity], // Отслеживать эти
path.total, // Обновить это
({ price, quantity }) => price * quantity // Этой функцией
);
Behavior vs Validation
| Аспект | Валидация | Behavior |
|---|---|---|
| Цель | Проверка корректности | Реакция на изменения |
| Результат | Ошибки | Побочные эффекты |
| Примеры | Required, формат email | Вычисляемый total, show/hide |
Следующие шаги
- Вычисляемые поля —
computeFrom,transformValue - Условная логика —
enableWhen,enableWhen,resetWhen - Синхронизация —
copyFrom,syncFields