Value-attributter i select i React
La oss nå si at vi i taggene option
har attributtene value:
function App() {
return <div>
<select>
<option value="1">text1</option>
<option value="2">text2</option>
<option value="3">text3</option>
</select>
</div>;
}
I et slikt tilfelle, på grunn av tilstedeværelsen av attributtene value,
vil det være deres verdier som havner i staten,
og ikke tekstene i taggene option. Du kan overbevise deg selv
om dette ved å skrive ut valgresultatet i et avsnitt:
function 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>
ditt valg: {value}
</p>
</div>;
}
Å skille teksten option og dens verdi
kan være praktisk: teksten i taggen kan vi endre
som vi vil, mens i skriptet vårt
vil valgresultatet bli behandlet etter
verdien til attributtet value, som forblir
uendret.
Se eksempel:
function 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' && 'du valgte første alternativ'}
{value === '2' && 'du valgte andre alternativ'}
{value === '3' && 'du valgte tredje alternativ'}
</p>
</div>;
}
Nå, hvis vi endrer tekstene i taggene option,
vil ikke skriptets funksjon bli forstyrret - fordi den
er knyttet til verdien av attributtet value.
Bruk en nedtrekksliste til å foreslå at brukeren
velger hvilken aldersgruppe han tilhører:
fra 0 til 12 år, fra 13
til 17, fra 18 til 25,
eller eldre enn 25 år.