Atributos value em select no React
Suponha que agora nossas tags option
tenham atributos value:
function App() {
return <div>
<select>
<option value="1">text1</option>
<option value="2">text2</option>
<option value="3">text3</option>
</select>
</div>;
}
Nesse caso, devido à presença dos atributos value,
serão os seus valores que irão para o estado,
e não os textos das tags option. Podemos verificar
isso, exibindo o resultado da seleção em um parágrafo:
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>
sua escolha: {value}
</p>
</div>;
}
Separar o texto do option e seu valor
pode ser conveniente: podemos alterar o texto da tag
como quisermos, enquanto em nosso script
o resultado da seleção será processado pelo
valor do atributo value, que permanecerá
inalterado.
Veja o exemplo:
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' && 'você escolheu a primeira opção'}
{value === '2' && 'você escolheu a segunda opção'}
{value === '3' && 'você escolheu a terceira opção'}
</p>
</div>;
}
Agora, se alterarmos os textos das tags option,
o funcionamento do script não será quebrado - porque ele
está vinculado ao valor do atributo value.
Usando uma lista suspensa, peça ao usuário para
escolher a qual faixa etária ele pertence:
de 0 a 12 anos, de 13
a 17, de 18 a 25,
ou acima de 25 anos.