redux-forms版本: 6.6.3
react版本: 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中,它返回得非常快,不需要调用指定的submit函数。
发布于 2017-05-26 17:15:51
传入函数时,您将立即调用它们。当引用提交函数时,不需要在函数名之后包含()。this.updateSubmit().bind(this)应该是this.updateSubmit。你也不需要这里的束缚。
变化:this.props.handleSubmit(this.updateSubmit().bind(this))
致:this.props.handleSubmit(this.updateSubmit)
发布于 2017-05-30 13:27:06
我发现我需要做两件事。
this.props.handleSubmit((values)=> this.submitUpdate(values))()注意末尾添加的"()“。componentWillReceiveProps或componentWillUpdate之前没有分配给this.props。这是我新的自动提交电话:
componentDidUpdate() {
//moved this here so that this.props is updated from nextState
if (this.props.updateMyConfigState == "ValidationFulfilled"
&& this.props.updateMyConfigValidationClean) {
this.props.handleSubmit((values) => this.submitUpdate(values))();
}
}我知道这不在验证的redux表单建议之外,我认识到这可能不是处理验证的最佳方法。我目前的推理是:
https://stackoverflow.com/questions/44206746
复制相似问题