@inl0re/blnk
v2.0.0
Published
Subscription-based React form state library for uncontrolled forms
Downloads
488
Maintainers
Readme
blnk
blnk - библиотека состояния форм для React 19. Она оставляет поля неконтролируемыми, хранит значения в mutable store и уведомляет только подписчиков конкретных полей или выбранных частей formState.
Пакет публикуется как @inl0re/blnk.
Установка
npm install @inl0re/blnkБазовый пример
import { useForm } from "@inl0re/blnk";
type FormValues = {
user: {
email: string;
age: number;
};
};
const form = useForm<FormValues>({
defaultValues: {
user: { email: "", age: 18 },
},
});
<form onSubmit={form.handleSubmit((data) => console.log(data.user.email))}>
<input {...form.register("user.email")} />
<input type="number" {...form.register("user.age", { valueAsNumber: true })} />
<button type="submit">Submit</button>
</form>;Возможности
- Типизированные пути через
Path<T>иPathValue<T, P>. register,setValue,watch,resetиhandleSubmitс API, близким к React Hook Form.useWatchдля реактивного чтения значений в React.useFieldдля снимка значения, ошибки и состояния конкретного поля.useFormStateдля подписки на выбранную часть состояния формы.useFieldArrayсо стабильнымиidдля React keys.- Транзакции для пакетного уведомления подписчиков.
- Легкие resolver-адаптеры для Zod и Yup без обязательной runtime-зависимости.
Валидация
import { zodResolver } from "@inl0re/blnk";
const form = useForm<FormValues>({
schema: userSchema,
resolver: zodResolver(userSchema),
mode: "onBlur",
});Полевые валидаторы могут быть синхронными или асинхронными. Асинхронная валидация поддерживает debounce и защиту от устаревших результатов.
Релиз 2.0.0
- Каноническое имя пакета:
@inl0re/blnk. - Удалена случайная зависимость пакета от самого себя.
- Проверка публикации smoke-тестирует ESM и CJS импорт из scoped package.
register({ disabled: true })возвращает DOM propdisabled.- Примеры обновлены с доступными label, error description и live/error semantics.
