【React.js】React Hook useEffect has a missing dependency: ‘XXX’. Either include it or remove the dependency array.eslintreact-hooks/exhaustive-depsというエラーが出たのでその原因と対処方法

  • 2023年5月10日
  • 2023年5月14日
  • React.js

こんにちは。

野中やすおです。

今回の記事では、私が遭遇した「React Hook useEffect has a missing dependency: ‘XXX’. Either include it or remove the dependency array.eslintreact-hooks/exhaustive-deps」というwarningの原因とその対処方法について解説します。

そもそもの原因

このwarningは、warningの内容を見る限りreact-hooks/exhaustive-depsというESLintが出しているエラーのようです。

で、このエラーはESLintがuseEffectに対して「依存関係がおかしい・欠落している」場合に警告を出しています。

対処方法

以下の記事がとても参考なりました。

  1. 依存関係を解消する
  2. 特定の行だけESLintのルールを無効にする
  3. ソースコード全体でESLintのルールを無効にする

依存関係を解消

以下のように第2引数を空の配列からdependencyやotherDependencyを追加することで、warningが出なくなります。

ただし、dependencyやotherDependencyが更新されるたびにuseEffectが実行されることが注意が必要です。

特定の行だけESLintのルールを無効

2つ目は、「特定の行だけESLintのルールを無効にする」ということで以下のように「eslint-disable-next-line react-hooks/exhaustive-deps」を追加すればwarningが出なくなります。

私の場合は、こちらを選択しました。

ソースコード全体でESLintのルールを無効

.eslintrc.jsonなどのファイルに対して、以下のようにルールを追加することでソースコード全体でルールそのものを無効化することができます。