Value atribuudid Reacti selektis

Oletame nüüd, et meil on siltides option atribuudid value:

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

Sellisel juhul, tänu atribuutidele value, lähevad staatesse just nende väärtused, mitte siltide option tekstid. Selles saab veenduda, väljastades valiku tulemi lõiguks:

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>
      sinu valik: {value}
    </p>
  </div>;
}

Option teksti ja selle väärtuse eraldamine võib olla mugav: sildi teksti saame muuta meie soovil, samal ajal meie skriptis töödeldakse valiku tulemust vastavalt atribuudi value väärtusele, mis jääb muutumatuks.

Vaadake näidet:

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' && 'sa valisid esimese punkti'}
      {value === '2' && 'sa valisid teise punkti'}
      {value === '3' && 'sa valisid kolmanda punkti'}
    </p>
  </div>;
}

Nüüd, kui me muudame siltide option tekste, siis skripti tööd ei katkestata - sest see on seotud atribuudi value väärtusega.

Задание 1

Kasutades rippmenüüd, pakuge kasutajal valida, millisesse vanusegruppi ta kuulub: 0 kuni 12 aastat, 13 kuni 17, 18 kuni 25, või üle 25 aasta.