redux-forms版本: 6.6.3
反应版本: 15.5.0
我想在反应组件中调用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,并且在调用指定的提交函数时返回非常快。
答案 0 :(得分:2)
当您传递函数时,您将立即调用这些函数。当您引用提交函数时,您不需要在函数名之后包含()
。 this.updateSubmit().bind(this)
应为this.updateSubmit
。你也不需要绑定。
更改:this.props.handleSubmit(this.updateSubmit().bind(this))
收件人:this.props.handleSubmit(this.updateSubmit)
答案 1 :(得分:0)
我发现我需要做两件事。
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-form建议之外,我认识到这可能不是处理验证的最佳方法。我目前的推理是: