我有一个select
模式的TextField
,它包含MenuItem
s。我想在处理TextField
的onChange
事件时传递附加信息。
我想我可以将它们作为数据属性包含在MenuItem
s中,但到目前为止,我还没有找到实际这样做的方法。
function MyComponent({options}) {
const [value, setValue] = useState<string>('');
const changeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {
//read option-id and do stuff with it here
setValue(e.target.value);
};
return (
<TextField select onChange={changeHandler}> value={value}
{
options.map(
(option) =>
<StyledMenuItem key={option.id} value={option.value} data-option-id={option.id}>
{option.value}
</MenuItem>
)
}
</TextField>
);
}
这是我已有代码的一个超级简化版本。我不能把option.id
放在MenuItem
的值中,因为它需要是来自option.value
的字符串。而且,option.value
s不是唯一的。
我可以编写一个自定义组件来实现这一点,但是能够使用TextField
将真正简化事情。e.target
似乎只包含我的TextField
的值和名称,我在事件中没有看到其他有用的信息。
1条答案
按热度按时间sqxo8psd1#
你可以将id作为value传递,如果需要的话,从数组中获取相应的选项作为prop,如下所示: