Qraft(クラフト) 資格・学習クイズアプリ

React入門 練習問題 18:フォーム入力:状態管理の方式

Reactでフォームの入力欄(input要素)を「制御されたコンポーネント(controlled component、=入力値をReactのstateで管理する仕組み)」として実装する際に必要な要素として正しいものはどれか。

  1. inputタグにvalue属性とonChange処理を両方設定して管理する
  2. inputタグにvalue属性のみを設定し変更処理は省略する
  3. inputタグにdefaultValue属性のみを設定して管理する
  4. inputタグにrefだけを設定してDOM操作で値を管理する
  5. inputタグには属性を設定せずuseEffectで値を監視する
正解と解説を見る
正解:inputタグにvalue属性とonChange処理を両方設定して管理する

制御されたコンポーネントでは、入力値をstateに保持し、value属性とonChangeイベントハンドラの両方を設定することで、入力値の表示と更新をReact側で一元管理する。

【正解の理由】
value属性でstateの値を表示し、onChangeで入力があるたびにstateを更新することで、入力欄の値が常にReactのstateと同期した状態になる。これにより入力値のバリデーションや加工がしやすくなる。

【不正解の理由】
• 「value属性のみを設定し変更処理は省略する」:onChangeがないと入力ができない読み取り専用の欄になってしまう
• 「defaultValue属性のみを設定して管理する」:defaultValueは初期値の指定のみで、以降の値をReactが管理しない非制御コンポーネントの手法である
• 「refだけを設定してDOM操作で値を管理する」:refを使う方法は非制御コンポーネントの手法であり、制御されたコンポーネントとは異なる
• 「属性を設定せずuseEffectで値を監視する」:入力値の変化を検知する仕組みがなく、制御された状態を作れない

← 前の問題問題一覧次の問題 →
アプリで解いてレーティングを上げる(無料・登録不要)