【发布时间】:2017-05-26 17:00:48
【问题描述】:
redux-forms 版本: 6.6.3
反应版本: 15.5.0
我想从我的 react 组件中的 componentWillRecieveProps 函数中调用不同的提交函数。
componentWillReceiveProps(nextProps) {
if (nextProps.updateTierConfigState == "ValidationFulfilled"
&& nextProps.updateMyConfigValidationClean) {
console.log('CWRP calling submit()')
//this.props.submit(); //THIS CALLS DEFAULT on FORM's onSubmit
this.props.handleSubmit(this.updateSubmit().bind(this))
}
else {
this.props.handleSubmit(this.createSubmit().bind(this))
}
}
updateSubmit(values) {
//do stuff
}
createSubmit(values) {
//do stuff
}
我见过这样的例子:https://github.com/erikras/redux-form/issues/711#issuecomment-191850962
但是,我无法成功调用handleSubmit。它不会调用传入的函数。
我已经调试到handleSubmit,它返回非常快,没有调用指定的提交函数。
【问题讨论】:
-
需要查看
this.props.handleSubmit函数来调试这个。 -
没有直接关系,但我认为您在 if 语句中的嵌套已关闭。在 if 块后面有两个结束大括号,在
componentWillReceiveProps之外还有一个 else 块。 -
@Jose,缺少的 } 仅存在于上面的帖子中,而不存在于我的实际代码中。会更正,仍然。
-
@ChaseDeAnda,handleSubmit 由 redux-form 库实现。
-
查看redux-form.com/6.0.0-alpha.4/examples/submitValidation。 “将它作为 onSubmit 道具传递给您的装饰组件。在这种情况下,您将在您的装饰组件中使用 onSubmit={this.props.handleSubmit} 以在单击提交按钮时触发它。将其作为参数传递给装饰组件内部的 this.props.handleSubmit 函数。在这种情况下,您将在装饰组件内部使用 onClick={this.props.handleSubmit(mySubmit)} 以在单击提交按钮时触发它。"
标签: javascript reactjs redux-form