编辑包含已保存数据的FieldArray
时,我希望删除按钮只是将属性_destroy: true
添加到对象中。从那里,当我将PUT结构化为API时,我将指示该记录被销毁。
在onClick for delete中,我尝试了:
(e) => {
const objectToDestroy = { ...fields.get(e.target.value), _destroy: true };
// If ID exists, we need to PUT a delete, else we can just remove from the list
fields.remove(e.target.value)
if (objectToDestroy.id) fields.insert(e.target.value, objectToDestroy)
}
就我在商店看到的而言,这是有效的。因此,我尝试通过使“已删除”字段消失来在UI中反映这一点。这是我为确定是否渲染FieldArray
迭代的字段而做的函数:
const isRowVisible = (index) => {
return !fields.get(index)._destroy;
}
当我点击第一个销毁按钮时,该项目消失。但当我点击一秒时,它才消失,直到我专注于表单元素(强制重新呈现表单)。
有没有更好的方法来解决我错过的这一切?或者也许我做错了什么?
编辑:
我将字段_destroy
添加到表单中:
<Field name={`${member}._destroy`} component="input" />
这是一个帮助可视化问题的gif: