首页 文章

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

提问于
浏览
0

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

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

据我所知,我有两个选项来设置字段验证:

  • 将验证函数传递给reduxForm()

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

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

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

  • 使用Field组件上的validate prop设置验证功能

这条路线我将prop作为参数传递给验证函数 . IE浏览器 . <Field validate={minValue(this.props.minValue)} /> But in this comment据说这不是一个好方法,因为它在每个表单渲染上创建一个新函数 . 实际上它并没有发生验证错误 .

My attempts on codepen

1 回答

  • 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 
      validate={this.minAmount}
      ....
    

相关问题