0Pricing
React Academy · レッスン

StrictModeの動作

開発時の二重呼び出しと非推奨APIの警告について理解します

「StrictModeの動作」はCoddyKit上の無料React Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。

ようこそ

このレッスンでは、開発環境で React.StrictMode が行うこと、表示される警告、そしてより安全な React コードの記述にどのように役立つかを学びます。

StrictMode とは

StrictMode は、コンポーネントツリーの一部をラップして、**開発環境でのみ**追加のチェックを有効にする特別な React コンポーネントです。本番用ビルドにはまったく影響しません。
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <App />
  </StrictMode>
);

ライフサイクルの二重呼び出し

Strict Mode では、React は開発環境でコンポーネント関数と一部のライフサイクルメソッドを意図的に**2 回**呼び出します。これは、適切にクリーンアップされていない副作用を見つけるための仕組みです。

なぜ二重に呼び出すのか

React 18 以降では、将来コンポーネントが再マウントされる可能性があります(高速リフレッシュや Offscreen API など)。開発環境で二重に呼び出すことでこの状況をシミュレートし、蓄積するサブスクリプションや 2 回実行される DOM の変更といったバグを見つけられます。

Effect のマウント・アンマウント・再マウント

React 18 の StrictMode では、初回マウント時にすべての useEffect が実行され、クリーンアップされ、もう一度実行されます。クリーンアップ関数が正しければ、この二重実行による問題はありません。アプリが壊れる場合は、クリーンアップがないか、正しくありません。
useEffect(() => {
  const id = setInterval(() => setTick(t => t + 1), 1000);
  return () => clearInterval(id); // cleanup required!
}, []);

非推奨 API の検出

コードで `componentWillMount`、`componentWillReceiveProps`、文字列 ref などの非推奨 React API を使用すると、StrictMode が警告します。これらの警告は、ブラウザーコンソールに黄色の警告として表示されます。

レガシー Context API に関する警告

サードパーティライブラリがレガシー Context API(`childContextTypes` / `getChildContext`)を使用していると、StrictMode が警告します。これは、そのライブラリを最新の `React.createContext` API に更新する必要があることを示しています。

既存のアプリでも安全に有効化

既存のアプリでは、コンポーネントツリーの一部だけを StrictMode でラップして、段階的に有効化できます。新しいセクションから始め、警告を修正しながら範囲を広げてください。
function App() {
  return (
    <>
      <LegacyPart />  {/* not wrapped */}
      <StrictMode>
        <NewFeature />
      </StrictMode>
    </>
  );
}

見た目の違いはない

StrictMode は目に見える UI をレンダリングしません。これは開発専用のツールです。DOM に追加の要素が表示されることはなく、追加のコンソール警告と二重呼び出しの動作だけが発生します。

最初から有効にする

プロジェクトの開始時点から StrictMode を有効にすることがベストプラクティスです。二重呼び出しによる問題を早期に修正するほうが、コードベースが大きくなってから発見して修正するよりも、はるかに低コストです。

確認問題

React StrictMode でコンポーネント関数を二重に呼び出す目的は何ですか?

まとめ

StrictMode は、レンダリングとエフェクトを二重に呼び出して不純なコードを見つけ、非推奨 API を警告し、将来の React の機能に備える、コストのかからない開発ツールです。

次のレッスン

次のレッスンは **Pure Components & Avoiding Side Effects in Render** です。変更や外部からの読み取りを含まないレンダリング関数の書き方を学びます。

よくある質問

「StrictModeの動作」レッスンは無料ですか?

はい。「StrictModeの動作」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。

「StrictModeの動作」で何を学びますか?

開発時の二重呼び出しと非推奨APIの警告について理解します ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

React Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「StrictModeの動作」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このReact Academyレッスンでコードを書いて実行できますか?

はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. StrictModeの動作
  2. Pure Componentsとrenderでの副作用回避
  3. KeyとRefのベストプラクティス
  4. フォルダー構成と命名規則
← React Academyに戻る