不验证 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
属性中只有onRowAdd
和onRowDelete
,没有onRowUpdate
。在我们想要允许编辑行的情况下,让 validate
的回调区分编辑和删除行会更加困难,因为在任何一种情况下,该行都会有一个 tableData
属性.
我想阻止用户添加名称已在 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
属性中只有onRowAdd
和onRowDelete
,没有onRowUpdate
。在我们想要允许编辑行的情况下,让 validate
的回调区分编辑和删除行会更加困难,因为在任何一种情况下,该行都会有一个 tableData
属性.