我有一个表单,可以通过几种不同的方式处理提交。该差异由表单值中的标志来管理,该标志可以是true,也可以是false。
我遇到了一个非常奇怪的问题,当我使用Formik setValues()函数时,表单根本没有进入handleSubmit函数。它只是停止执行。但是,如果我只使用this.pros.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函数,应用程序在将submit值设置为true后停止执行。
发布于 2019-06-20 04:13:03
原来问题是在调用setFieldValue时,is Validating标志设置为true,因此最简单的解决方案是向setFieldValue传递第三个参数,以手动关闭验证:
submit = () => {
this.props.setFieldValue('submit', true, false)
this.props.handleSubmit()
}https://stackoverflow.com/questions/56657296
复制相似问题