【问题标题】:Validate a Field with Redux-form使用 Redux-form 验证字段
【发布时间】:2018-04-25 23:29:38
【问题描述】:

我尝试学习如何使用 redux-form,但我遇到了一些问题。 例如,我有一个这样的 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

如果我只通过“电子邮件”更改我的字段名称,它可以正常工作。当我的字段是“individual.email”时,知道我做错了什么吗?

【问题讨论】:

    标签: reactjs react-redux redux-form react-redux-form


    【解决方案1】:

    试试这个

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

    【讨论】:

      【解决方案2】:

      errors.invididual.emailerrors 对象中的一个对象,即

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

      在您的validate() 函数的顶部,您可能已经声明了errors 对象,但它不知道它上面的individual 属性。这就是为什么只有 email 的字段有效 - 您已经定义了 errors 并将其上的 email 属性设置为 required

      我不确定它是否有效,但您必须执行以下操作:

      const errors = {
          individual: {}
      };
      

      然后你可以分配errors.individual.email = 'Required'

      【讨论】:

      • 在这里看起来像一个类似的问题:stackoverflow.com/questions/40704827/…
      • 我已经看过这个问题,但对我来说它不起作用,因为在我的 IF 中我的值无法读取。
      • 我想我不明白这个问题;您提到的类型错误是因为 individual 在您的 errors 对象上未定义
      • 是的,但即使我使用像您的示例这样的个人创建错误对象,我也无法设置错误。
      【解决方案3】:

      更改名称字段,使其不使用点。使用它individualEmail 将是标准的命名方式。你不应该使用 .在名称中

      【讨论】:

      • 在文档中是可能的: name 属性是必需的。它是一个字符串路径,采用点和括号表示法,对应于表单值中的一个值。它可能像“firstName”一样简单,也可能像“contact.billing.address[2].phones[1].areaCode”一样复杂。
      • ‘individual.name’ 是 name 属性的值。您不能使用点或括号表示法中的值。
      • 字段名称和值错误之间的联系是什么?
      • 在我的字段中,我安排根据需要创建一个 JSON 文档,并且我希望能够在每个字段上关联特定的消息。当我提交时,我看到name 值例如在`individual.name` 中。所以我希望能够在我的变量错误中指定错误消息
      • here 是一个关于使用 redux-forms 进行字段级验证的很棒的文档页面。如果没有看到更多代码,则很难进一步调试。 redux-form.com/7.2.3/examples/fieldlevelvalidation
      猜你喜欢
      • 2019-07-08
      • 2020-10-20
      • 2023-03-10
      • 2018-09-06
      • 2017-01-22
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多