首页 > 解决方案 > 如何在 onSubmit 处理程序上使用 formik 的 setSubmitting() 方法?

问题描述

我尝试在 onSubmit 处理程序中调用 formik 的 setSubmitting 方法。首先,我为 formik 创建一个 ref,如下所示:

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 函数?

标签: javascriptreactjsformik

解决方案


refreact 中的值在一个名为current. 正确的方法是:

formikRef.current.setSubmitting(false);

推荐阅读