code-share/hooks/useForm.ts

27 lines
648 B
TypeScript
Raw Normal View History

2024-02-20 06:52:39 +00:00
import { z } from "zod";
import { useForm as useHookForm, FieldValues } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import { useEffect } from "react";
export const useForm = <T extends FieldValues>(
schema: z.ZodSchema<T>,
initialValues?: Partial<T>
) => {
const form = useHookForm<T>({
resolver: zodResolver(schema),
defaultValues: initialValues as never,
});
useEffect(() => {
if (initialValues) {
form.reset(initialValues as never);
}
}, [initialValues, form.reset]);
return form;
};
2024-02-23 19:36:10 +07:00
export type useFormReturn<T extends FieldValues> = ReturnType<
typeof useForm<T>
>;