向 Redux Form Fields 动态添加验证规则的更优雅的方法是什么?

What is a more elegant way to dynamically add validation rules to Redux Form Fields?

我正在遍历对象数组以形成 Redux 表单字段,并非所有字段都需要用户输入。字段级验证规则需要一个函数,但我无法找出一个 returns 验证规则或 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}
          />
        ),
    )}

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

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

{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} />;