我正在使用多个自动完成MUI 组件,目前正在尝试编写一个“通用”事件处理程序,它将调用useReducer
钩子来存储状态。
问题是在Autocomplete
文档中,onChange 函数如下所示:
function(event: object, value: T | T[], reason: string) => void
我试图从事件对象的字段名(以确定自动完成正在改变什么),但event.target.name
并event.currentTarget.name
没有工作。
是否有任何方法可以检索已更改的组件的名称?
您未定义的原因是event.target
inonChange
指向 theli
但 MaterialUi Autocomplete 会将 the 添加name
到外部div
。所以,没有直接的方法。您可以使用 aref
和 usegetAttribute
来获取名称。
代码片段
export default function ComboBox() {
const ref0 = useRef();
return (
<Autocomplete
id="combo-box-demo"
ref={ref0}
name="movies"
options={top100Films}
getOptionLabel={option => option.title}
onInputChange={(e, v, r) => {
const ev = e.target;
if (r === "reset") console.log(ev, v, r);
}}
onChange={(e, v, r) => {
console.log(ref0.current.getAttribute("name"));
}}
style={{ width: 300 }}
renderInput={params => (
<TextField
name="auto-input"
{...params}
label="Combo box"
variant="outlined"
/>
)}
/>
);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句