react-hook-formを使うと、フォームをハンドリングするコードをコンパクトにできます。
フォームのステートの管理やバリデーションのタイミングなどもある程度デフォルトで設定されているので全てのロジックを実装する必要がなくなります。
いくつか従来のフォームの実装と比較した例を置いておくので、比較して良いと思ったら是非react-hook-formを採用していってください!
普通のフォームの実装です。
入力値のstateの定義やstateの変更のハンドリングを記述しなくていいので、コードの記述量が減ってすっきりとします。
従来の実装
react-hook-formを使った実装
バリデーションありのフォームの実装です。
基本的なバリデーションに関してはロジックが用意してあるので、圧倒的に記述量が減ります。
値を引数にとってエラーメッセージを返り値とするカスタムバリデーション関数をregisterで設定することも可能です。
また、useFormのmodeプロパティを設定することで、バリデーションの走るタイミングを制御することも可能です。
https://react-hook-form.com/api#useForm
従来の実装
react-hook-formを使った実装
react-hook-formは入力値の状態をstateで管理していないので、入力値が更新されるたびにレンダリングが走るということがありません。
これによって、コンポーネントの再描画のコストが減ります。
従来の実装
レンダリング回数: 1
react-hook-formを使った実装
レンダリング回数: 1
フィールドのリストを実装するサンプルです。
ほとんどの配列操作のメソッドが定義されているので、値の配列をstateで管理してそれを操作するメソッドを実装する必要がありません。
https://react-hook-form.com/api#useFieldArray
従来の実装
react-hook-formを使った実装
TextFieldコンポーネントで実装したサンプルです。