← 一覧へ
コードの書き間違い出る場所:ブラウザの画面・開発者ツールたまに出る

フックの使い方が間違っている(React)

Error: Invalid hook call. Hooks can only be called inside of the body of a function component.
Rendered more hooks than during the previous render.

ひとことで言うと

「useState や useEffect(フック)は、決まった場所でしか使えないのに、別の場所で使っています」という意味です。

よくある原因

  1. if 文や for 文の中でフックを使っている
  2. コンポーネントの外(ふつうの関数の中)で使っている
  3. React が2つ入っている

自分で確かめること

たいていは、こうすると直ります

フックはコンポーネントの一番上にまとめて書き、条件で分けたいときは、フックの中で分けます。

AIへの伝え方

下の文をコピーして、ChatGPT・Claude・Cursor などに貼り付けてください。トップで貼り付けたエラー文があれば、自動でそれに入れかわります。

次のエラーが出て困っています。プログラミング初心者にもわかるように、原因と直し方を教えてください。必要なら、直したコードも全部見せてください。

【エラー】
Error: Invalid hook call. Hooks can only be called inside of the body of a function component.
Rendered more hooks than during the previous render.

【やったこと】
(ここに、エラーが出る前にしたことを書く。例:npm run dev を実行した)

【参考】
このエラーは「フックの使い方が間違っている(React)」というもので、よくある原因は次のとおりです。
・if 文や for 文の中でフックを使っている
・コンポーネントの外(ふつうの関数の中)で使っている
・React が2つ入っている

どれに当てはまるかを確かめる方法も教えてください。