SetValues Formik函数禁用Formik HandleSubmit

时间:2019-06-18 21:27:58

标签: reactjs forms formik

我有一个可以处理提交方式的表格有两种。差异由值形式的标志来管理,该值可以为true或false。

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

为什么会这样?

在描述中告诉您所有内容,实际上没有必要显示代码,但这就是提交处理程序的样子:

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

        <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函数提交表单,将提交值设置为true后,应用程序将停止执行。

1 个答案:

答案 0 :(得分:0)

发现问题是调用setFieldValue时is Validating Flag设置为true,所以最简单的解决方案是将第三个参数传递给setFieldValue以手动关闭验证:

  submit = () => {
    this.props.setFieldValue('submit', true, false)
    this.props.handleSubmit()
  }