Повторяющееся поле Redux-Form

Я использую Redux-Form v.5.2.3. У меня есть ввод текста, который нужно повторить x раз, в зависимости от того, сколько раз пользователь нажимает кнопку. В настоящее время, поскольку я создаю одно и то же поле ввода с тем же именем поля, это не работает. Когда я печатаю что-то на одном входе, он автоматически вводит то же самое на других входах - это из-за того же имени.

Я думаю о создании уникального идентификатора и добавлении его в поле «имя», например:

Исходное поле:

Имя: <input type="text" {...name}>

2-е поле - генерируется после нажатия кнопки:

Имя: <input type="text" {...name2}>

Поле X - создается после нажатия кнопки x:

Имя: <input type="text" {...nameX}>

Есть идеи, если это работает, и пример того, как реализовать?

заранее спасибо


person user3047450    schedule 17.08.2016    source источник
comment
Используйте key, это будет отличать его. facebook.github.io/react/docs/create-fragment.html   -  person Noitidart    schedule 17.08.2016
comment
Я не уверен, что это правильный способ сделать это в Redux-Form?   -  person user3047450    schedule 17.08.2016
comment
Я думаю, что использовал поле как массив, и я обработал его изменение вручную и просто изменил правильный индекс для каждого указанного поля.   -  person Ali Sepehri.Kh    schedule 18.08.2016
comment
@ AliSepehri.Kh - Не могли бы вы пояснить это или привести пример? Насколько мне известно, вы определяете некоторые поля, например: export const fields = ['name', 'age']; (конечно, в массиве полей вы МОЖЕТЕ автоматически сгенерировать некоторые поля), которые форма сокращения затем помещает в компонент React - export default reduxForm({ form: 'ManagePerson', fields, asyncValidate })(ManagePerson) - Итак, как бы вы получили эти автоматические сгенерированные поля, чтобы вы могли использовать их здесь - <input type="text" {...nameX}>, где nameX - это автоматически сгенерированное поле?   -  person user3047450    schedule 18.08.2016


Ответы (2)


Я бы проверил глубокие формы в документации РФ.

Пытаюсь понять и это, но насколько я понимаю, вы можете определить массив полей, используя нотацию [].

export const fields = [
  'name[]',
];

Затем вы добавляете дополнительные поля, используя addField(value?, index?). Затем вы можете получить доступ к каждому полю, рассматривая this.props.fields.name как массив из name полей.

В вашем случае, я думаю, это должно выглядеть примерно так

<div>
  {this.props.fields.name.map((field, index) => (
    <input key={index} type="text" {...field} />
  )}
</div>
person hkwu    schedule 18.08.2016

Вы можете использовать redux-from v6.0.0. В этой версии вы можете использовать FieldArray для полей массива.

person Ali Sepehri.Kh    schedule 24.08.2016