我正在构建与此处https://redux-form.com/8.3.0/examples/fieldarrays/相同的嵌套表单,并且工作正常。但是,在删除字段时,我不仅需要onClick={() => fields.remove(index)}
,还可以向需要销毁的FieldArray字段之一添加_destroy
键。所以我创建了方法:
const removeField = useCallback(i => {
const currentField = fields.get(i)
const newValue = {
...currentField,
_destroy: '1'
}
fields.push(newValue)
fields.remove(i)
}, [fields])
并添加了条件,以便在提供_destroy
键时该字段将消失:
if (fields.get(idx)._destroy === '1') {
return ''
}
并将“删除”按钮更改为:
<button type="button" onClick={() => removeField(idx)}>remove</button>
但是此按钮仅可在一个字段中使用一次。因为表格只是不重新呈现。如果我单击字段,则表单正在重新呈现,并且字段消失。
或者,如果我专门为此方法添加状态触发器,它就会开始按预期工作。但是我不明白为什么没有特殊的状态触发器就无法正常工作?