从“外部”

时间:2017-09-06 14:13:47

标签: javascript reactjs redux redux-form

我有一个Redux-form的随机组件,例如:

{code...}

  <form>
    <Field
      component={TextField}
      name="firstName"
    />
  </form>

export default connect(mapStateToProps)(reduxForm({
  form: 'myForm',
  validate,
})(injectIntl(myForm)));

validate.js文件:

{code...}

const firstName = trim(values.get('firstName'));
if (!(firstName)) {
  errors.firstName = 'Required';
}

我能够修改错误消息,它可以是必需,或者我想要的任何其他内容。

但我的问题是:我能否更改错误,甚至可以添加新的条件,但在<{strong> validate.js文件之外?例如,在组件内部。所以我可以将必需名称更改为另一个名称而不修改validate.js文件?

谢谢!

编辑:如何引用包含表单的组件中的指定字段?

有没有办法在全球范围内修复它?简单的例子:

globalComponent.js

{ 
   form: 'myForm',
   error: {
     field: 'firstName',
     errorMsg: 'Use a capital letter!',
   },
}

1 个答案:

答案 0 :(得分:0)

您可以使用单独的对象来定义验证消息:

export const validationMessages = {
    required: 'Field is required'
}

// ...code

errors.firstName = validationMessages.required

然后,如果您需要更改所需的消息,只需设置validationMessages.required,如下所示:

validationMessages.required = 'First name is required'

但是,使用验证消息改变对象不是一个好的解决方案。我强烈建议您使用名为redux-form-validators的模块。

使用此模块,您可以轻松覆盖验证消息:

import { required, email } from 'redux-form-validators'

<Field
  ...
  validate={required()} // Will use the default required message
>

<Field
  ...
  validate={required({ message: 'Hey, the first name is required!' })} // Will override the default message
/>