Atrybuty value w selektorze w React

Załóżmy teraz, że w tagach option znajdują się atrybuty value:

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

W takim przypadku, z powodu obecności atrybutów value, do stanu trafią właśnie ich wartości, a nie teksty tagów option. Można się o tym przekonać, wypisując wynik wyboru do akapitu:

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>
      Twój wybór: {value}
    </p>
  </div>;
}

Rozdzielenie tekstu option i jego wartości może być wygodne: tekst tagu możemy zmieniać dowolnie, podczas gdy w naszym skrypcie wynik wyboru będzie przetwarzany na podstawie wartości atrybutu value, który pozostanie niezmieniony.

Spójrz na przykład:

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' && 'wybrałeś pierwszą opcję'}
      {value === '2' && 'wybrałeś drugą opcję'}
      {value === '3' && 'wybrałeś trzecią opcję'}
    </p>
  </div>;
}

Teraz, jeśli zmienimy teksty tagów option, działanie skryptu nie zostanie zakłócone - ponieważ jest ono powiązane z wartością atrybutu value.

Задание 1

Za pomocą listy rozwijanej zaproponuj użytkownikowi wybór grupy wiekowej, do której należy: od 0 do 12 lat, od 13 do 17, od 18 do 25, lub powyżej 25 lat.