如何覆盖select所有动作? material-table

How to override select all action? material-table

Material-Table 允许禁用某些行 selected,但是当用户随后按下 select all 时,它将突出显示禁用的行。有什么方法可以让这个功能忽略被禁用的行吗?

禁用行的代码:

options={{
    selection: true,
    selectionProps: rowData => ({
        disabled: disableRow(rowData)
    })
}}

select禁用行的图像示例 select 全部:

这是一个明显的错误。

目前,您可以通过将 onSelectionChange 中禁用的行的 tableData.checked 设置为 false 来修复它。如果数据保存在 this.state 内并且您想禁用所有行,请使用:

 onSelectionChange={(rows) => this.setState({data: rows.map(row => ({
    ...row,
    tableData:{
    ...row.tableData,
    checked: false
    }
    }))})}

如果你有像 disableRow 这样的函数,你可以使用它来为单独的行设置 checked 属性。这将让您控制选择。

您应该在 material-table 打开一个问题来解决禁用行的选择,以便将来解决这个问题。

这对我有效(不使用任何 setState):

data={yourData.map(row => {
  row.tableData = {...row.tableData, disabled: disableRow(row)};
  return rowData;
})}
options={{
  selectionProps: row => ({disabled: row.tableData.disabled})
}}