如何在onSubmit处理程序上使用formik的setSubmitting方法?

问题描述

我尝试在onSubmit处理函数调用formik的setSubmitting方法。 首先,我为Formik创建一个引用,如下所示:

const formikRef = React.createRef();

然后我尝试在onSubmit处理程序中调用它:

function Add() {
    const formikRef = React.createRef();
    const onSubmit = (e) => {
        console.log(e);
        setTimeout(() => {
            formikRef.setSubmitting(false);
        },4000);
    };

    return (
        <Formik
            innerRef={formikRef}
            initialValues={initialValues}
            onSubmit={onSubmit}
            validationSchema={validationSchema}
        >
            {(props) => {
                return (
                    <Form>
                        ...
                    </Form>
                );
            }}
        </Formik>
    );
}

export default Add;

但是它会抛出这样的错误

TypeError: formikRef.setSubmitting is not a function

如何在有或没有formik的innerRef的情况下使用formik的setSubmitting()onSubmit函数

解决方法

ref的react值位于名为current的属性中。正确的方法是:

formikRef.current.setSubmitting(false);