Форма не перерисовывается - PullRequest
0 голосов
/ 17 апреля 2020

Я создаю вложенную форму так же, как здесь 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>

Но эта кнопка работает только один раз для одного поля. Потому что форма просто не рендерится. Если я нажимаю на поле, форма перерисовывается и поля исчезают. Или, если я добавлю триггер состояния специально для этого метода, он начнет работать так, как задумано Это не так. Но я не понимаю, почему он не работает без специального триггера состояния?

...