Redux表单 - 如何将UPDATED道具传递给验证功能?

时间:2016-12-21 21:18:40

标签: reactjs redux redux-form

我的组件中有几个字段,其中大部分都是明确命名的。但是,我有一个动态添加带有ID的票证的按钮,例如ticket1ticket2等。这些票证存储在一个数组中,可通过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

1 个答案:

答案 0 :(得分:0)

与validate功能相同的问题。类似地,我在validate函数中将store的先前版本作为第二个参数。对我来说,解决此问题的方法是为Redux Form的Field组件提供验证道具。当我提供道具时,我会从商店(门票)中获取一个字段,并对该字段进行所需的操作。 通过向字段组件提供道具进行验证的示例:https://redux-form.com/6.5.0/examples/fieldlevelvalidation/