Reactjs 使用表单有效性响应formik disable submit按钮
我正在使用formik库进行我的react项目。当必填字段为空或有任何错误时,我需要首先禁用submit按钮。我使用下面的代码检查表单状态Reactjs 使用表单有效性响应formik disable submit按钮,reactjs,formik,Reactjs,Formik,我正在使用formik库进行我的react项目。当必填字段为空或有任何错误时,我需要首先禁用submit按钮。我使用下面的代码检查表单状态 const formik = useFormik(false); <Formik initialValues={!location.state ? InvoiceInitalValues : location.state} validationSchema={POValidation} innerRef
const formik = useFormik(false);
<Formik
initialValues={!location.state ? InvoiceInitalValues : location.state}
validationSchema={POValidation} innerRef={formRef}
onSubmit={(form, actions, formikHelper) => {
console.log(form);
console.log(formRef);
setTimeout(() => {
saveInvoice(form, actions, formikHelper);
actions.setSubmitting(false);
}, 1000);
}}
>
{({
handleSubmit,
handleChange,
setFieldValue,
values,
handleReset,
errors,
resetForm, isSubmitting
})
我使用控制台记录表单状态,但表单始终为“isValid:True”。请检查下面的图片。
我也用html打印了它。但始终是正确的。我需要将此设置为禁用我的按钮
<Button className="btn btn-primary mr-1" type="submit" disabled={!formik.isValid}>
打印状态
<p> {formik.isValid=== true ? "True" : "False"} </p>
我试图用下面的代码来禁用我的按钮
<Button className="btn btn-primary mr-1" type="submit" disabled={!formik.isValid}>
提交
为什么formik表单有效性始终为真,即使必填字段也是空的。我花了更多的时间来解决这个问题。仍然无法修复此问题。任何人都知道如何解决这个问题,您是使用组件创建表单的,但您正在检查通过hook创建的另一个formik实例是否有效。那是不对的
您应该使用或使用Formik
正如您使用Formik组件编写代码一样。以下是访问isValid属性的方式:
<Formik
initialValues={!location.state ? InvoiceInitalValues : location.state}
// ...
>
{({
values,
handleChange,
// ...
isValid // HERE
}) => (
<form onSubmit={handleSubmit}>
<input
...
这是一个。您使用组件创建了表单,但您正在检查通过hook创建的另一个formik实例是否有效。那是不对的
您应该使用或使用Formik
正如您使用Formik组件编写代码一样。以下是访问isValid属性的方式:
<Formik
initialValues={!location.state ? InvoiceInitalValues : location.state}
// ...
>
{({
values,
handleChange,
// ...
isValid // HERE
}) => (
<form onSubmit={handleSubmit}>
<input
...
这是一个。我也试过了。但形式总是正确的。当表单加载它应该是错误的,提交按钮应该是禁用的。美丽!!!我申请了我的项目。它工作得很好。谢谢@AjeetI也试过了。但形式总是正确的。当表单加载它应该是错误的,提交按钮应该是禁用的。美丽!!!我申请了我的项目。它工作得很好。谢谢@Ajeet