如何基于具有redux-form的参数进行同步字段验证?

时间:2017-09-17 18:38:15

标签: react-redux redux-form

我需要在redux-form字段上进行同步字段验证。它的一个参数(最小值)在redux商店中。

如何将param传递给字段验证器功能?甚至是表格​​的同步验证器功能。

据我了解,我有两种设置字段验证的选项:

  1. 将验证函数传递给reduxForm()
  2. 如果我使用此路线,如何从验证功能访问表格道具? 即使我将validate函数绑定到表单,它也看不到表单的道具。

    App = reduxForm({
      form: "MyForm",
      validate: validate.bind(App)
    })(App);
    

    我无法将MyForm.Validate函数传递给reduxForm。

    1. 使用Field组件
    2. 上的validate prop设置验证功能

      这条路线我会将道具作为参数传递给验证功能。 IE浏览器。 <Field validate={minValue(this.props.minValue)} /> But in this comment据说这不是一个好方法,因为它在每个表单渲染上创建一个新函数。实际上它无法正常工作 - 在其他字段的验证错误发生之前不会进行验证。

      My attempts on codepen

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

const Validations = {
  minAmount: minValue => value => {
    return parseFloat(value) < minValue
      ? "Amount must be at least " + minValue
      : undefined;
  }
};
组件构造函数中的

constructor(props) {
    super(props);
    this.minAmount = Validations.minAmount(
        this.props.minAmount
    ); // this a a workaround for validations with parameters causing issues , see https://github.com/erikras/redux-form/issues/2453#issuecomment-272483784
}

然后在Field:

<Field 
  validate={this.minAmount}
  ....