我正在迭代一个对象数组以形成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}
/>
),
)}
然而,这种只是放弃验证道具的做法似乎不够优雅而且不干燥。还有其他建议吗?
答案 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} />;