我有一个可以处理提交方式的表格有两种。差异由值形式的标志来管理,该值可以为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后,应用程序将停止执行。
答案 0 :(得分:0)
发现问题是调用setFieldValue时is Validating Flag设置为true,所以最简单的解决方案是将第三个参数传递给setFieldValue以手动关闭验证:
submit = () => {
this.props.setFieldValue('submit', true, false)
this.props.handleSubmit()
}