不验证 Material Table 中的删除

Don't validate deletion in Material Table

我想阻止用户添加名称已在 table 中的行,因此我的部分验证会检查情况是否如此。但这意味着如果用户试图删除一行,他们将无法保存删除,因为验证失败。我怎样才能让验证仅在用户创建行时运行,而在用户删除行时跳过?

validate: rowData => rowData.name != null && !rowsState.some(x => String(x.name) === String(rowData.name))

您可以通过是否具有 tableData 属性 来区分已经添加到 table 的行和正在创建的行。如果 tableData 属性 未定义,则该行仍在创建中;否则,该行正在被编辑或删除。

我们可以把代码改成这样:

validate: rowData => rowData.tableData !== undefined || (rowData.requirementId != null && !rowsState.some(x => String(x.requirementId) === String(rowData.requirementId)))

对于这个table,我在<MaterialTable>editable属性中只有onRowAddonRowDelete,没有onRowUpdate。在我们想要允许编辑行的情况下,让 validate 的回调区分编辑和删除行会更加困难,因为在任何一种情况下,该行都会有一个 tableData 属性.