Проверить поле с помощью Redux-формы

Я пытаюсь научиться работать с избыточной формой, и у меня есть небольшая проблема. Например, у меня есть такой компонент Field:

<Field
  name='individual.email'
  id="email"
  component={ renderInput }
  placeholder='test'
/>

В validate.js у меня есть что-то вроде этого:

 if ( !values.individual.email ) {
            errors.individual.email = 'Required'
        }

Но у меня есть ошибка:

TypeError: Cannot set property 'email' of undefined

Если я изменяю имя моего поля только на "электронную почту", это нормально работает. Есть идеи, что я делаю неправильно, если мое поле - "индивидуальный адрес электронной почты"?

3 ответа

Решение

Попробуй это

 if ( values.individual && !values.individual.email ) {
            errors.individual.email = 'Required'
        }

Изменение поля имени, чтобы оно не использовало точку. Используй это individualEmail был бы стандартный способ именования. Вы не должны использовать. В именах

errors.invididual.email это объект внутри errors объект, т.е.

errors = {
    individual: {
        email: 'Required'
    }
}

В верхней части вашего validate() функция, вы, вероятно, объявили errors объект, но он не знает о individual собственность на это. Вот почему поле только email работает - вы определили errors и устанавливаем email собственность на это required,

Я не уверен, что это работает, но вы должны сделать что-то вроде:

const errors = {
    individual: {}
};

И тогда вы могли бы назначить errors.individual.email = 'Required'

Другие вопросы по тегам