Я создаю вложенную форму так же, как здесь https://redux-form.com/8.3.0/examples/fieldarrays/, и она отлично работает. Но при удалении полей мне нужно не просто onClick={() => fields.remove(index)}
, а вместо этого добавить ключ _destroy
к одному из полей FieldArray, которое необходимо уничтожить. Итак, я создал метод:
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>
Но эта кнопка работает только один раз для одного поля. Потому что форма просто не рендерится. Если я нажимаю на поле, форма перерисовывается и поля исчезают. Или, если я добавлю триггер состояния специально для этого метода, он начнет работать так, как задумано Это не так. Но я не понимаю, почему он не работает без специального триггера состояния?