未受控的选择元素
渲染一个未受控的 <select>
元素,使用回调函数将其值传递给父组件。
- 使用
selectedValue
属性作为<select>
元素的defaultValue
,设置其初始值。 - 使用
onChange
事件触发onValueChange
回调函数,并将新值发送给父组件。 - 使用
Array.prototype.map()
在values
数组上创建一个<option>
元素,为每个传递的值创建一个选项。 values
中的每个项必须是一个包含两个元素的数组,第一个元素是项的value
,第二个元素是显示的文本。
const Select = ({ values, onValueChange, selectedValue, ...rest }) => {
return (
<select
defaultValue={selectedValue}
onChange={({ target: { value } }) => onValueChange(value)}
{...rest}
>
{values.map(([value, text]) => (
<option key={value} value={value}>
{text}
</option>
))}
</select>
);
};
const choices = [
['grapefruit', '葡萄柚'],
['lime', '酸橙'],
['coconut', '椰子'],
['mango', '芒果'],
];
ReactDOM.createRoot(document.getElementById('root')).render(
<Select
values={choices}
selectedValue="lime"
onValueChange={val => console.log(val)}
/>
);