Легковесная библиотека для работы с формами, построенная на основе effector.
npm install efforms effector
new Form(initialValues, rules?, validCallback?, nonValidCallback?)
Создает новый экземпляр формы.
initialValues: T - начальные значения полей формы
rules?: FormRulesType<T> - правила валидации (опционально)
validCallback?: EventCallable<void> - коллбек при успешной валидации (опционально)
nonValidCallback?: EventCallable<void> - коллбек при неуспешной валидации (опционально)
$fields: Store<T> - store с текущими значениями полей
$errors: Store<Record<keyof T, string[]>> - store с ошибками валидации
setFields: Event<Partial<T>> - установить значения полей
setErrors: Event<Record<keyof T, string[]>> - установить ошибки
reset: Event<void> - сбросить форму к начальным значениям
clearErrors: Event<void> - очистить все ошибки
validate: Effect<void, void> - выполнить валидацию формы
$handlers: Record<keyof T, (value: FormFieldValueType) => void> - автоматически созданные обработчики для каждого поля
const simpleForm = new Form({
username: '',
age: 0,
});
// Изменение значений
simpleForm.$handlers.username('john_doe');
simpleForm.$handlers.age(25);
// Сброс формы
simpleForm.reset();
const form = new Form(
{ password: '' },
{
password: [
(value) => {
if (!value) {
return { valid: false, errors: ['Поле обязательно'] };
}
return { valid: true };
},
(value) => {
if ((value as string).length < 8) {
return { valid: false, errors: ['Минимум 8 символов'] };
}
return { valid: true };
},
(value) => {
if (!/[A-Z]/.test(value as string)) {
return { valid: false, errors: ['Нужна заглавная буква'] };
}
return { valid: true };
},
(value) => {
if (!/[0-9]/.test(value as string)) {
return { valid: false, errors: ['Нужна цифра'] };
}
return { valid: true };
},
],
},
);
"effector": "^22.0.0 || ^23.0.0""typescript": "^4.0.0 || ^5.0.0 || ^6.0.0"Нашли баг? Создайте issue
Если вам нравится efforms, поставьте звезду на GitHub!