Reactにおけるセレクトのvalue属性

ここで、optionタグに value属性がある場合を考えてみましょう:

jsxfunction App() {
  return <div>
    <select>
      <option value="1">text1</option>
      <option value="2">text2</option>
      <option value="3">text3</option>
    </select>
  </div>;
}

この場合、value属性が存在するため、 ステートにはoptionタグのテキストではなく、 その値が渡されます。 選択結果を段落に出力することでこれを確認できます:

jsxfunction App() {
  const [value, setValue] = useState('');
  
  return <div>
    <select value={value} onChange={(event) => setValue(event.target.value)}>
      <option value="1">text1</option>
      <option value="2">text2</option>
      <option value="3">text3</option>
    </select>
    <p>
      あなたの選択: {value}
    </p>
  </div>;
}

optionのテキストとその値を分離することは 便利です:タグのテキストは自由に変更できますが、 スクリプト内での選択結果の処理は 変更されないvalue属性の値に基づいて行われます。

例を見てみましょう:

jsxfunction App() {
  const [value, setValue] = useState('');
  
  return <div>
    <select value={value} onChange={event => setValue(event.target.value)}>
      <option value="1">text1</option>
      <option value="2">text2</option>
      <option value="3">text3</option>
    </select>
    <p>
      {value === '1' && 'あなたは最初の項目を選択しました'}
      {value === '2' && 'あなたは二番目の項目を選択しました'}
      {value === '3' && 'あなたは三番目の項目を選択しました'}
    </p>
  </div>;
}

ここでoptionタグのテキストを変更しても、 スクリプトの動作は壊れません。動作は value属性の値に結びついているからです。

Задание 1

ドロップダウンリストを使用して、ユーザーに 自身の年齢層を選択してもらいましょう: 0歳から12歳、 13歳から17歳、 18歳から25歳、 または25歳以上。