我正在使用带有ReactJS的Material UI Table,并且无论何时选择/取消选择行,都希望更改状态变量。 Table
onRowSelection
每次选择一行时都会触发{<1}}:
<Table
height='300px'
fixedHeader={true}
multiSelectable={true}
showRowHover={true}
onRowSelection={this.handleRowSelection.bind(this)}
>
我将以下函数传递给onRowSelection
道具:
handleRowSelection(selectedRows) {
let contactsImport = [];
if (selectedRows === 'all') {
contactsImport = this.state.contacts.new;
} else if (selectedRows !== 'none') {
selectedRows.forEach((index) => {
contactsImport.push(this.state.contacts.new[index]);
});
}
this.setState({
contactsImport:contactsImport
});
}
这会正确设置状态,但会阻止表行选择正常运行。如果我单击一行,则复选框不会检查 - 它似乎正在检查,然后立即取消选中,因为我得到了'涟漪'动画但没有勾选标记。
删除对setState
的调用可以解决问题,因此setState
是否可能阻止回调正确返回?或者这可能是Material UI的错误?
答案 0 :(得分:2)
如果您希望以编程方式控制该行,则必须从该州管理单行组件的selected
属性。默认情况下,selected
属性为false
,因此当setState
重新发布时,它会重置为false