首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetValues Formik函数禁用Formik HandleSubmit

SetValues Formik函数禁用Formik HandleSubmit
EN

Stack Overflow用户
提问于 2019-06-19 05:27:58
回答 1查看 8K关注 0票数 2

我有一个表单,可以通过几种不同的方式处理提交。该差异由表单值中的标志来管理,该标志可以是true,也可以是false。

我遇到了一个非常奇怪的问题,当我使用Formik setValues()函数时,表单根本没有进入handleSubmit函数。它只是停止执行。但是,如果我只使用this.pros.values.x= ...它进入函数并继续提交表单。

为什么会发生这种情况?

显示代码真的没有意义,因为描述告诉了你一切,但提交处理程序看起来是这样的:

确认函数调用提交处理程序,该处理程序设置该值,然后尝试调用handleSubmit

代码语言:javascript
复制
        <Confirmation
          items={this.confirmationData()}
          isLoading={this.props.isSubmitting}
          open={isConfirming}
          preapproval={true}
          submitAnother={this.submitAnother}
          onClick={this.submit} //this is the submit handler
          onClose={() => this.setState({ isConfirming: false })}
        />

  submit = () => {
    this.props.setValues({ ...this.props.values, submit: true})
    this.props.handleSubmit()
  }

如果将第一行更改为this.props.values.submit = true,则表单将提交。但是,使用setValues函数,应用程序在将submit值设置为true后停止执行。

EN

回答 1

Stack Overflow用户

发布于 2019-06-20 04:13:03

原来问题是在调用setFieldValue时,is Validating标志设置为true,因此最简单的解决方案是向setFieldValue传递第三个参数,以手动关闭验证:

代码语言:javascript
复制
  submit = () => {
    this.props.setFieldValue('submit', true, false)
    this.props.handleSubmit()
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56657296

复制
相关文章

相似问题

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