将验证规则动态添加到Redux表单字段的更优雅的方法是什么?

时间:2018-02-19 23:27:36

标签: reactjs redux-form

我正在迭代一个对象数组以形成Redux表单字段,而不是所有字段都需要用户输入。字段级验证规则期望一个函数,我还没有能够找出一个返回验证规则或null的动态函数。

我目前这样做:

  {areaQuestions.map(
      question =>
        question.required ? (
          <Field
            component={SelectField}
            key={question.area}
            label={question.questionText}
            name={question.area}
            placeholder={question.questionText}
            options={question.questionAnswers}
            validate={required}
          />
        ) : (
          <Field
            component={SelectField}
            key={question.area}
            label={question.questionText}
            name={question.area}
            placeholder={question.questionText}
            options={question.questionAnswers}
          />
        ),
    )}

然而,这种只是放弃验证道具的做法似乎不够优雅而且不干燥。还有其他建议吗?

1 个答案:

答案 0 :(得分:3)

您可以在示例中使用逻辑AND:

{areaQuestions.map(
  question => <Field
      component={SelectField}
      key={question.area}
      label={question.questionText}
      name={question.area}
      placeholder={question.questionText}
      options={question.questionAnswers}
      validate={question.required && required}
  />
)}

如果数组变得更复杂,你也可以构建一个数组:

const validate = [];
if(question.required) {
    validate.push(required);
}

return <Field ... validate={validate} />;