我有一个控制 Select ,以0, 1, 2, 3, 4, 5, '5+', 'unknown'
的值react .当 Select 或更改值时,我得到的是每个值的字符串,而不是值0、1、2、3、4和5的数字.
我在Stackoverflow上搜索,发现了一个解决方案,其中值用parseInt
包装,但由于我也有字符串作为可能的值,我得到5表示"5+"字符串,NaN表示"未知".
有人提出有效的解决方案吗?
Form component
...
const { formData, handleInputChange, handleSubmit } = useForm();
const options = [
{ label: 0, value: 0 },
{ label: 1, value: 1 },
{ label: 2, value: 2 },
{ label: 3, value: 3 },
{ label: 4, value: 4 },
{ label: 5, value: 5 },
{ label: '5+', value: '5+' },
{ label: "I don't know", value: 'unknown' },
];
return (
<form onSubmit={handleSubmit(submit)}>
<select id="numberOfElectricityMeters" name="numberOfElectricityMeters" value={formData.numberOfElectricityMeters} onChange={handleInputChange}>
<option value=''>Choose an option</option>
{options.map((option, i) => (
<option key={i} value={option.value}>
{option.label}
</option>
))}
</select>
<select id="numberOfGasMeters" name="numberOfGasMeters" value={formData.numberOfGasMeters} onChange={handleInputChange}>
<option value=''>Choose an option</option>
{options.map((option, i) => (
<option key={i} value={option.value}>
{option.label}
</option>
))}
</select>
</form>
)
useForm
const handleChange = (e) => {
if (e.target.type === 'checkbox') {
setFormData((currentValues) => ({ ...currentValues, [e.target.name]: e.target.checked }));
} else {
setFormData((currentValues) => ({ ...currentValues, [e.target.name]: e.target.value }));
}
};