eslint-plugin-react-hooks
eslint-plugin-react-hooks は、React のルールを強制するための ESLint ルールを提供します。
このプラグインは React のルール違反をビルド時に検出し、コンポーネントやフックがコードの正しさとパフォーマンスを保つための React のルールに従っているか確認するのに役立ちます。lint ルールは、React の基本的なパターン(exhaustive-deps と rules-of-hooks)と、React Compiler が検出する問題の両方を対象とします。React Compiler の診断情報はこの ESLint プラグインによって自動的に表示されるため、アプリにコンパイラをまだ導入していない場合でも利用できます。
推奨ルール
以下のルールが eslint-plugin-react-hooks の recommended プリセットに含まれています。
exhaustive-deps- React フックの依存配列に必要な依存値がすべて含まれているか検証rules-of-hooks- コンポーネントとフックがフックのルールに従っているか検証component-hook-factories- コンポーネントやフックを内部で定義する高階関数がないか検証config- コンパイラの設定オプションを検証error-boundaries- 子コンポーネントのエラーを、エラーバウンダリではなく try/catch で処理しようとしていないか検証gating- ゲーティングモードの設定を検証globals- レンダー中にグローバル変数への代入やミューテーションを行っていないか検証immutability- props、state、およびその他のイミュータブルな値をミューテーションしていないか検証incompatible-library- メモ化と互換性のないライブラリを使用していないか検証preserve-manual-memoization- 既存の手動メモ化がコンパイラによって保持されるか検証purity- 既知の純関数でない関数をチェックし、コンポーネントやフックが純粋であるか検証refs- ref が正しく使用され、レンダー中に読み書きされていないか検証set-state-in-effect- エフェクト内で setState を同期的に呼び出していないか検証set-state-in-render- レンダー中に state をセットしていないか検証static-components- コンポーネントが静的に作成され、レンダーのたびに再作成されていないか検証unsupported-syntax- React Compiler がサポートしていない構文を使用していないか検証use-memo- 返り値のないuseMemoフックの使用がないか検証