@letar/forms

Хуки

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'

On this page