react-hook-form について
react-hook-form は、React Hook Form アプリの構築、レビュー、リファクタリングに使うガイドスキルです。パフォーマンスを軸に、設定、購読、制御コンポーネント、検証、フィールド配列、状態管理を扱う41の優先度付きルールを収録しています。
主な機能
- 0141件の優先度付き React Hook Form ルール
- 028カテゴリにわたるガイド
- 03フォーム設定と検証の実践
- 04購読とフィールド配列のパターン
- 05UI ライブラリ連携の指針
活用シーン
- 01React Hook Form でフォームを構築
- 02フォームのパフォーマンス問題を確認
- 03フィールド購読と状態処理をリファクタリング
- 04制御 UI コンポーネントを連携
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ thongdn-it/ react-agent-skills --skill react-hook-formインストール後、Claude Code で/react-hook-formを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdadv-devtools-performance.mdadv-formprovider-memo.mdadv-testing-wrapper.mdarray-complete-default-objects.mdarray-separate-crud-operations.mdarray-unique-fieldarray-per-name.mdarray-use-field-id-as-key.mdarray-virtualization-formprovider.mdctrl-avoid-double-registration.mdctrl-controller-field-props.mdctrl-local-state-combination.mdctrl-single-usecontroller-per-component.mdctrl-usecontroller-isolation.mdformcfg-async-default-values.mdformcfg-default-values.mdformcfg-revalidate-mode.mdformcfg-should-unregister.mdformcfg-useeffect-dependency.mdformcfg-validation-mode.mdformstate-avoid-isvalid-with-onsubmit.mdformstate-destructure-formstate.mdformstate-getfieldstate-for-single-field.mdformstate-subscribe-to-specific-fields.mdformstate-useformstate-isolation.mdinteg-mui-controller-pattern.md詳細
React Hook Form のベストプラクティス
React Hook Form アプリケーションのパフォーマンス最適化に関する包括的なガイドです。8 つのカテゴリにわたる 41 のルールを含み、影響度の高い順に優先順位を付けて、フォームの開発、自動リファクタリング、コード生成を支援します。
適用するタイミング
次の場合に、これらのガイドラインを参照してください。
- React Hook Form を使って新しいフォームを作成するとき
- useForm オプション(mode、defaultValues、validation)を設定するとき
- watch/useWatch でフォームの値を購読するとき
- 制御された UI コンポーネント(MUI、shadcn、Ant Design)を統合するとき
- useFieldArray で動的なフィールド配列を管理するとき
- パフォーマンス上の問題についてフォームをレビューするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | フォーム設定 | CRITICAL | formcfg- |
| 2 | フィールドの購読 | CRITICAL | sub- |
| 3 | 制御されたコンポーネント | HIGH | ctrl- |
| 4 | バリデーションパターン | HIGH | valid- |
| 5 | フィールド配列 | MEDIUM-HIGH | array- |
| 6 | 状態管理 | MEDIUM | formstate- |
| 7 | 統合パターン | MEDIUM | integ- |
| 8 | 高度なパターン | LOW | adv- |
クイックリファレンス
1. フォーム設定(CRITICAL)
formcfg-validation-mode- パフォーマンスを最適化するため、onSubmit モードを使用するformcfg-revalidate-mode- 送信後のパフォーマンスを高めるため、reValidateMode を onBlur に設定するformcfg-default-values- フォームの初期化には必ず defaultValues を指定するformcfg-async-default-values- サーバーデータには非同期の defaultValues を使用するformcfg-should-unregister- 動的フォームのメモリ効率を高めるため、shouldUnregister を有効にするformcfg-useeffect-dependency- useEffect の依存配列に useForm の戻り値オブジェクトを含めない
2. フィールドの購読(CRITICAL)
sub-usewatch-over-watch- 再レンダーを分離するため、watch の代わりに useWatch を使用するsub-watch-specific-fields- フォーム全体ではなく、特定のフィールドを監視するsub-usewatch-with-getvalues- タイミングの安全性を確保するため、useWatch と getValues を組み合わせるsub-deep-subscription- データが必要なコンポーネントツリーの深い位置で購読するsub-avoid-watch-in-render- 一度だけ値を読み取る場合、render 内で watch() を呼び出さないsub-usewatch-default-value- 初回レンダー用に useWatch に defaultValue を指定するsub-useformcontext-sparingly- 深いネストでの useFormContext の使用は控えめにする
3. 制御されたコンポーネント(HIGH)
ctrl-usecontroller-isolation- 再レンダーを分離するため、useController を使用するctrl-avoid-double-registration- useController で二重登録しないctrl-controller-field-props- UI ライブラリに合わせて Controller の field props を正しく接続するctrl-single-usecontroller-per-component- コンポーネントごとに useController を 1 つだけ使用するctrl-local-state-combination- UI 専用の状態には、ローカル状態と useController を組み合わせる
4. バリデーションパターン(HIGH)
valid-resolver-caching- resolver のキャッシュを利用するため、スキーマをコンポーネントの外で定義するvalid-dynamic-schema-factory- 動的なバリデーションにはスキーマファクトリーを使用するvalid-error-message-strategy- オプショナルチェーンまたは lodash get でエラーにアクセスするvalid-inline-vs-resolver- 複雑なルールにはインラインバリデーションより resolver を優先するvalid-delay-error- エラー表示が短時間に頻発するのを抑えるため、delayError を使用するvalid-native-validation- シンプルなフォームではネイティブバリデーションを検討する
5. フィールド配列(MEDIUM-HIGH)
array-use-field-id-as-key- useFieldArray のマップでは field.id を key として使用するarray-complete-default-objects- フィールド配列の操作には完全なデフォルトオブジェクトを指定するarray-separate-crud-operations- 連続するフィールド配列の操作は分けて実行するarray-unique-fieldarray-per-name- フィールド名ごとに useFieldArray のインスタンスを 1 つだけ使用するarray-virtualization-formprovider- 仮想化されたフィールド配列には FormProvider を使用する
6. 状態管理(MEDIUM)
formstate-destructure-formstate- レンダリング前にformStateのプロパティを分割代入しますformstate-useformstate-isolation- 状態のサブスクリプションを分離するには、useFormStateを使用しますformstate-getfieldstate-for-single-field- 単一フィールドの状態にアクセスするには、getFieldStateを使用しますformstate-subscribe-to-specific-fields- useFormStateで特定のフィールド名をサブスクライブしますformstate-avoid-isvalid-with-onsubmit- ボタンの状態管理では、onSubmitモードでisValidを使用しないようにします
7. 統合パターン(MEDIUM)
integ-shadcn-form-import- shadcn Formコンポーネントのインポート元を確認しますinteg-shadcn-select-wiring- スプレッドではなくonValueChangeを使って、shadcn Selectを接続しますinteg-mui-controller-pattern- Material-UIコンポーネントにはControllerを使用しますinteg-value-transform- 型変換のためにControllerレベルで値を変換します
8. 高度なパターン(LOW)
adv-formprovider-memo- FormProviderの子要素をReact.memoでラップしますadv-devtools-performance- 本番環境およびパフォーマンステスト中はDevToolsを無効にしますadv-testing-wrapper- QueryClientとAuthProviderを含むテスト用ラッパーを作成します
使い方
詳しい説明とコード例については、各リファレンスファイルをお読みください。
- セクションの定義 - カテゴリー構成と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
- リファレンスファイル:
references/{prefix}-{slug}.md
関連スキル
- Zod resolverによるスキーマ検証については、
zodスキルを参照してください - React 19のサーバーアクションについては、
react-19スキルを参照してください - UI/UXフォーム設計については、
frontend-designスキルを参照してください
完全版ドキュメント
すべてのルールを展開した完全なガイド:AGENTS.md
コメント
Markdown 対応