首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Redux-窗体调用来自ComponentWillRecieveProps的备用提交

Redux-窗体调用来自ComponentWillRecieveProps的备用提交
EN

Stack Overflow用户
提问于 2017-05-26 17:00:48
回答 2查看 105关注 0票数 0

redux-forms版本: 6.6.3

react版本: 15.5.0

我想在react组件中调用与componentWillRecieveProps函数不同的提交函数。

代码语言:javascript
运行
复制
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函数。

EN

回答 2

Stack Overflow用户

发布于 2017-05-26 17:15:51

传入函数时,您将立即调用它们。当引用提交函数时,不需要在函数名之后包含()this.updateSubmit().bind(this)应该是this.updateSubmit。你也不需要这里的束缚。

变化:this.props.handleSubmit(this.updateSubmit().bind(this))

致:this.props.handleSubmit(this.updateSubmit)

票数 2
EN

Stack Overflow用户

发布于 2017-05-30 13:27:06

我发现我需要做两件事。

  1. 使用以下行调用自定义提交方法:this.props.handleSubmit((values)=> this.submitUpdate(values))()注意末尾添加的"()“。
  2. 将这一行(以及周围的if条件)移动到componentDidUpdate()方法。我在提交方法中使用道具来决定组件的验证状态,而来自mapStateToProps的道具在componentWillReceivePropscomponentWillUpdate之前没有分配给this.props。

这是我新的自动提交电话:

代码语言:javascript
运行
复制
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表单建议之外,我认识到这可能不是处理验证的最佳方法。我目前的推理是:

  1. 它允许我有多个提交验证操作(分别用于创建和更新用户操作),其中每个操作都有自己的错误和警告行为。特别是错误:不允许操作和WarningsOnly:允许,但需要额外的用户批准。
  2. 在gui元素之外的单独列表中直观地显示错误/警告。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44206746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档