import { useForm, SubmitHandler } from 'react-hook-form'; import { ErrorMessage } from '@hookform/error-message'; type Inputs = { name: string; email: string; }; export const Demo = () => { const { register, handleSubmit, reset, formState: { errors }, } = useForm<Inputs>(); const onSubmit: SubmitHandler<Inputs> = (data) => { console.log(data); reset(); }; return ( <form onSubmit={handleSubmit(onSubmit)}> <input {...register('name')} /> <input {...register('email', { required: true, maxLength: 60, pattern: { value: /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/, message: 'メールアドレスの形式が不正です', }, })} /> <ErrorMessage errors={errors} name="email" /> <button type="submit">Submit</button> </form> ); };
registerの記述が大きく変わり、
以前name属性で書いていた部分を第一引数で書くようになり、
入力補完も効くようになりました!
registerを使うときはref属性に書くのではなく、
スプレッド構文を使うようになりました。
他にもerrorsがformStateの中に入ったりしています。