React入門 練習問題 38:コンポーネント:エラー処理の仕組み
Reactの「Error Boundary(エラーバウンダリ)」の目的として正しいものはどれか。
- 子コンポーネントで発生したエラーを捕捉し、アプリ全体のクラッシュを防ぐ。
- 存在しないURLにアクセスされた際に、404エラーページへリダイレクトする。
- 非同期通信でのネットワークエラーを検知し、自動的に再リクエストを行う。
- フォームの入力内容をリアルタイムで検証し、エラーメッセージを表示する。
- メモリリークを防止するため、不要になったコンポーネントを強制的に破棄する。
Qraftユーザーの成績:難易度 Cランク(レーティング1167)・正答率 58%(7/12回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)
正解と解説を見る
正解:子コンポーネントで発生したエラーを捕捉し、アプリ全体のクラッシュを防ぐ。
Error Boundary(エラーバウンダリ)は、子コンポーネントで発生したエラーを捕捉し、アプリ全体のクラッシュを防ぐ機能が正解です。
【正解の理由】
Reactでは、コンポーネントのレンダリング中にエラーが発生するとアプリ全体が白紙状態になる(クラッシュする)ことがあります。Error Boundaryを使うと、そのエラーを捕まえて代替のUI(「エラーが発生しました」などのメッセージ)を表示させることができます。
【不正解の理由】
• 「存在しないURLにアクセスされた際に、404エラーページへリダイレクトする」は誤り。これはルーターライブラリ(React Routerなど)の機能である。
• 「非同期通信でのネットワークエラーを検知し、自動的に再リクエストを行う」は誤り。fetchやaxiosなどの通信エラーはError Boundaryでは捕捉できず、try-catchなどで個別に処理する必要がある。
• 「フォームの入力内容をリアルタイムで検証し、エラーメッセージを表示する」は誤り。これはバリデーション(入力チェック)の処理である。
• 「メモリリークを防止するため、不要になったコンポーネントを強制的に破棄する」は誤り。コンポーネントの破棄(アンマウント)時の処理はuseEffectのクリーンアップ関数などで行う。