Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用表单有效性响应formik disable submit按钮_Reactjs_Formik - Fatal编程技术网

Reactjs 使用表单有效性响应formik disable 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

我正在使用formik库进行我的react项目。当必填字段为空或有任何错误时,我需要首先禁用submit按钮。我使用下面的代码检查表单状态

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