Javascript Formik submitForm()类型错误

Javascript Formik submitForm()类型错误,javascript,reactjs,formik,Javascript,Reactjs,Formik,重要提示:安装旧版本的Formik可以消除此错误。我使用了npm安装formik@2.0.7--保存以解决此问题。从2.0.8开始,bug又回来了。 我第一次尝试使用Formik,并遵循一个指南,但将其应用到我的表单中,我的div和input有不同的类,布局也不同,但我认为这不是问题所在 我在谷歌上找不到有这个错误的人。我将从文件中添加整个代码,因为一些问题可能是由于导入造成的 这是来自浏览器控制台的错误: Warning: An unhandled error was caught from

重要提示:安装旧版本的Formik可以消除此错误。我使用了
npm安装formik@2.0.7--保存
以解决此问题。从2.0.8开始,bug又回来了。

我第一次尝试使用Formik,并遵循一个指南,但将其应用到我的表单中,我的div和input有不同的类,布局也不同,但我认为这不是问题所在

我在谷歌上找不到有这个错误的人。我将从文件中添加整个代码,因为一些问题可能是由于导入造成的

这是来自浏览器控制台的错误:

Warning: An unhandled error was caught from submitForm() TypeError: Function has non-object prototype 'undefined' in instanceof check
    at Function.[Symbol.hasInstance] (<anonymous>)
    at Formik.tsx:757
警告:从submitForm()捕获到未处理的错误类型错误:函数在instanceof check中具有非对象原型“未定义”
at函数。[Symbol.hasInstance]()
在福米克,tsx:757
当我按下submit按钮时发生错误,代码如下所示

import React,{useState} from 'react'
import * as Yup from 'yup'
import {Formik} from 'formik'
import Error from './Error'

const ValidationSchema = Yup.object().shape({
    nicknameField: Yup.string().min(1,"Minimal length: 1").max(16, "Maximum length: 16")
    .required("Minimum length: 1")
    .matches("^[a-zA-Z0-9\\[\\]!@_-]{1,16}$", "Only A-Z, a-z, 0-9, []!@_- characters are allowed")
});

export default function ChooseNickname(){
    return(
        <Formik initialValues={{nicknameField:""}}
        validationSchema={ValidationSchema}
        onSubmit={(values, { setSubmitting, resetForm }) => {
            // setSubmitting(true);

            setTimeout(() => {
              alert(JSON.stringify(values, null, 2));
              resetForm();
              setSubmitting(false);
            }, 500);
          }
        }>
            {({values, errors, touched, handleChange, handleBlur, handleSubmit, isSubmitting}) => (
                <form onSubmit={handleSubmit}>
                <div className="form-group">
                    <h2 className="font-weight-bold text-dark">Set your nickname</h2>
                    <input type="text" 
                    className={touched.nicknameField && errors.nicknameField? "form-control is-invalid":"form-control"}
                    name="nicknameField" 
                    id="nicknameField"
                    placeholder="nickname"
                    onChange={handleChange}
                    onBlur={handleBlur}
                    value={values.nicknameField}
                    />
                    <pre>{JSON.stringify(values, null, 2)}</pre>
                    {console.log(errors)}
                </div>
                <button type="submit" className="btn btn-primary" disabled={false}>Submit</button>
                </form> 
            )}
        </Formik>
    );
};
import React,{useState}来自“React”
从“Yup”导入*为Yup
从'Formik'导入{Formik}
从“”导入错误/Error'
const ValidationSchema=Yup.object().shape({
昵称字段:Yup.string().min(1,“最小长度:1”).max(16,“最大长度:16”)
.所需(“最小长度:1”)
.matches(“^[a-zA-Z0-9\\[\\]!@-]{1,16}$”,“只允许使用a-Z、a-Z、0-9、[]!@-”字符)
});
导出默认函数ChooseNickname(){
返回(
{
//设置提交(真);
设置超时(()=>{
警报(JSON.stringify(值,null,2));
resetForm();
设置提交(假);
}, 500);
}
}>
{({值、错误、触摸、把手更改、把手模糊、把手提交、问题提交})=>(
设置你的昵称
{JSON.stringify(值,null,2)}
{console.log(错误)}
提交
)}
);
};
但是如果我将
更改为

{
警报(“formik提交”)
}}>

这样就没有错误了,但它显然是无用的,因为在本例中,它不再是Formik表单,验证也没有完成,等等。

事实上,您的代码运行良好。。我已经用最新的Formik版本v2.1.4对它进行了测试(复制/粘贴),它似乎可以工作

不确定,但您的开发环境中的其他库可能存在一些问题?或者可能是
node\u模块
cache


我做了一些简单的修改,以确保并添加了一些缺少的类。在这里查看它

是的,在沙箱中工作。我想我会保留有效的版本。反正只是个练习项目。谢谢。@awran5没有2.4.1的Formik版本,我想它是2.1.4?@JassubeKnabijonov确实。。非常感谢。
<form onSubmit={() => {
    alert("formik submitting")
}}>