Reactjs SetValues Formik函数禁用Formik HandleSubmit
我有一个表格,可以处理提交的两种不同的方式。差异由值形式的标志管理,该标志可以是true或false 我遇到了一个非常奇怪的问题,当我使用Formik setValues()函数时,表单根本没有进入handleSubmit函数。它只是停止执行。但是,如果我仅通过以下方式设置值:this.props.values.x=。。。 它进入函数并继续提交表单 为什么会这样 显示代码实际上毫无意义,因为描述告诉了您一切,但提交处理程序是这样的: 确认函数调用submit处理程序,该处理程序设置值,然后尝试调用handleSubmitReactjs SetValues Formik函数禁用Formik HandleSubmit,reactjs,forms,formik,Reactjs,Forms,Formik,我有一个表格,可以处理提交的两种不同的方式。差异由值形式的标志管理,该标志可以是true或false 我遇到了一个非常奇怪的问题,当我使用Formik setValues()函数时,表单根本没有进入handleSubmit函数。它只是停止执行。但是,如果我仅通过以下方式设置值:this.props.values.x=。。。 它进入函数并继续提交表单 为什么会这样 显示代码实际上毫无意义,因为描述告诉了您一切,但提交处理程序是这样的: 确认函数调用submit处理程序,该处理程序设置值,然后尝试调
<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.setState({isConfirming:false})
/>
提交=()=>{
this.props.setValues({…this.props.values,submit:true})
this.props.handleSubmit()
}
如果第一行更改为this.props.values.submit=true,则表单将使用setValues函数进行提交,将提交值设置为true后,应用程序停止执行。结果表明,问题在于调用setFieldValue时,正在验证标志设置为true,因此最简单的解决方案是将第三个参数传递给setFieldValue以手动关闭验证:
submit = () => {
this.props.setFieldValue('submit', true, false)
this.props.handleSubmit()
}