-
I'm prototyping a basic form component. The problem is that my export const Input = ({ label, name }: LabelProps): JSX.Element => {
const { getFieldState, register } = useFormContext()
const fieldState = getFieldState(name)
console.log('name', fieldState)
return (
<div>
<Label label={label} name={name} />
<input
{...register(name)}
className={clsx(styles.input, { [styles.error]: fieldState.isTouched && fieldState.error })}
/>
{fieldState.isTouched && fieldState.error ? <p>{fieldState.error.message}</p> : ''}
</div>
)
}
const schema = zod.object({
name: zod.string().min(1, { message: 'Required' }),
age: zod.number().min(10)
})
export const FormDemo = (): JSX.Element => {
const methods = useForm({
resolver: zodResolver(schema),
mode: 'all'
})
const onSubmit = (data): void => console.log('success', data);
const onError = (errors): void => console.log('error', errors);
return (
<FormProvider {...methods}>
<form onSubmit={methods.handleSubmit(onSubmit, onError)}>
<Input label='Name' name='name' />
<Input label='Age' name='age' />
<SubmitButton>Submit</SubmitButton>
</form>
</FormProvider>
)
} |
Beta Was this translation helpful? Give feedback.
Answered by
viveleroi
Nov 16, 2022
Replies: 1 comment
-
Looks like my problem was my Input wasn't properly "subscribed" to const { getFieldState, register, formState } = useFormContext()
const fieldState = getFieldState(name, formState) |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
viveleroi
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Looks like my problem was my Input wasn't properly "subscribed" to
formState
: