Хуки
useAppForm, useFormContext, useFieldContext и другие
useAppForm
Основной хук для создания форм. Преднастроен с Zod валидацией.
import { useAppForm } from '@letar/forms'
const form = useAppForm({
defaultValues: { name: '', email: '' },
onSubmit: async ({ value }) => {
await saveData(value)
},
})useFormContext
Доступ к инстансу формы из дочернего компонента:
const form = useFormContext()
form.handleSubmit()useTypedFormContext
Типобезопасная версия useFormContext:
type FormData = { name: string; email: string }
const form = useTypedFormContext<FormData>()useFieldContext
Доступ к состоянию поля из кастомного компонента:
const field = useFieldContext()
// field.state.value, field.handleChange()useDeclarativeForm
Доступ к декларативному контексту формы:
const { schema, isSubmitting } = useDeclarativeForm()useFieldActions
Действия над полем:
const { setValue, setError, reset } = useFieldActions('email')useFormApi
Интеграция с Server Actions:
const { submit, isLoading, error } = useFormApi({
action: createUserAction,
onSuccess: (result) => router.push(`/users/${result.id}`),
})useTypedFormSubscribe
Типизированная подписка на изменения конкретного поля:
const price = useTypedFormSubscribe<FormData>('price')useRelationOptions
Доступ к опциям, загруженным RelationFieldProvider:
const { options, isLoading } = useRelationOptions('category')См. Связанные поля.
useFieldConstraints
Zod constraints для поля (min, max, required):
const { constraints } = useFieldConstraints('email')useFormI18n
Доступ к i18n контексту:
const i18n = useFormI18n()
// i18n?.locale → 'en' | 'ru'