我的组件中有几个字段,其中大部分都是明确命名的。但是,我有一个动态添加带有ID的票证的按钮,例如ticket1
,ticket2
等。这些票证存储在一个数组中,可通过this.props
但是,在我的验证功能中,我不确定如何引用/循环遍历票证列表并运行任何验证,主要是因为我不确定如何传递这些更新的字段值到验证功能。在页面加载时,它采用道具的当前状态。但是,当我添加一个故障单,更新this.props,然后单击一个提交按钮时,validate函数有一个my.props的先前版本,我似乎无法更新。
这是我的下面
const validate = values => {
const errors = {}
if (!values.eventTitle){
console.log('here', values)
errors.eventTitle = 'Event title required'
}
// below, can't do this since I don't know if there tickets in advance
// loop over tickets array and determine errors
// ...
return errors
}
export default validate
然后
const mapStateToProps = (state) => {
return {
tickets: state.event.get('tickets')
}
}
const EventFieldsWrapper = reduxForm({
form: 'EventFields',
validate,
onSubmitFail: (errors) => scrollToFirstError(errors),
})(EventFields)
... connect component and redux-form
答案 0 :(得分:0)
与validate功能相同的问题。类似地,我在validate函数中将store的先前版本作为第二个参数。对我来说,解决此问题的方法是为Redux Form的Field组件提供验证道具。当我提供道具时,我会从商店(门票)中获取一个字段,并对该字段进行所需的操作。 通过向字段组件提供道具进行验证的示例:https://redux-form.com/6.5.0/examples/fieldlevelvalidation/