Redux-форма не форматирует данные поста и проблема [объект объекта] - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть две проблемы, которые являются результатом друг друга.Я заполняю два поля данными initialValue, затем могу вставить другое поле в массив.Проблема возникла, когда я попытался изменить структуру initialValue с:

  initialValues: {
    rockSingers: [ "Axl Rose", "Brian Johnson"]
  }

на:

  initialValues: {
    rockSingers: [{ singer: "Axl Rose" }, { singer: "Brian Johnson" }]
  }

Первая проблема заключается в том, что поле теперь возвращает [object Object].После отправки формы отображается правильный формат json, пока я не перейду ко второму вопросу ... при добавлении нового значения, отличного от формата данных initialValue - например,

{
  "rockSingers": [
    {
      "singer": "Axl Rose"
    },
    {
      "singer": "Brian Johnson"
    },
    "Tom Rudge"
  ]
}

Вот коды и коробка - https://codesandbox.io/s/8kzw0pw408

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

Измените renderRockSingers, чтобы захватывать объект, а не строку.

const renderRockSingers = ({ fields }) => (
  <div>
    <h3>Rock Singers:</h3>
    {fields.map((rockSinger) => (
      <div>
        <Field name={`${rockSinger}.singer`} key="index" component="input" />
      </div>
    ))}
    <button type="button" onClick={() => fields.push()}>
      Add more
    </button>
  </div>
);

Подробнее о компоненте FieldArray здесь: fieldarrays

0 голосов
/ 26 ноября 2018
<Field
  name={rockSinger}
  key={index}
  component="input"
  format={(value, name) => (value !== undefined ? value.singer : "")}
  normalize={value => ({ singer: value })}
/>

Код Песочница: https://codesandbox.io/s/7m1p9600y0

0 голосов
/ 26 ноября 2018

Попробуйте это:

const renderRockSingers = ({ fields }) => (
      <div>
        <h3>Rock Singers:</h3>
        {fields.map((rockSinger, index) => (
          <div>
            <Field
              name={rockSinger}
              format={value => value.singer}
              parse={value => ({ singer: value })}
              key={index}
              component="input"
            />
          </div>
        ))}
        <button type="button" onClick={() => fields.push({ singer: '' })}>
          Add more
        </button>
      </div>
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...