我正在使用react-datatable-component(https://www.npmjs.com/package/react-data-table-component)并具有自定义单元格,因为我希望某些字段可编辑。
但是,我在材质UI中使用“选择”字段时遇到问题,因为当触发“ onChange”事件时,它返回“ event.target.value”不是一个函数。
我创建了以下沙箱https://codesandbox.io/s/jolly-williams-3hiyj?file=/src/App.js:50-100,在这里您可以在选择选项后看到问题。
任何想法将不胜感激。
谢谢
看来您的问题是由react-data-table-component的这一行引起的TableRow.js
,它e.target.getAttribute('data-tag')
在单击行时会尝试执行。
但是,当您onClick
在材质用户界面FormControl
或Select
组件上附加一个时console.log
,event.target
您将得到
{ value: 3, name: undefined }
该event.target
不是一个HTML元素,而只是一个object
带有属性value
和name
。因此,当react-data-table-component执行时,e.target.getAttribute('data-tag')
它会崩溃。
可能的解决方案
将onClick
处理程序附加到material-uiFormControl
或Select
并停止event
的传播
<FormControl onClick={(e) => e.stopPropagation()} >
...
另请注意,执行此操作(下面的代码)不会更改所选的值。您必须为“选择”列创建一个组件,然后将选定的值添加到state
。我将这些修复程序添加到了可以在下面找到的codeandbox中。
...
onChange={(event) => {
row.pressTypeCode = event.target.value;
}}
PS:react-data-table-component具有ignoreRowClick
列,但是我不确定为什么它不适用于我们的代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句