ВАЖНО: Установка более старой версии Formik избавляет от этой ошибки. Я использовал npm install formik@2.0.7 --save
, чтобы решить это. Начиная с версии 2.0.8 ошибка возвращается.
Я пытался использовать Formik впервые и следовал руководству, но применял его к моей форме, где у моих элементов div и входов были разные классы и макет был другим, но я не думаю, что это проблема.
Я не могу найти в Google никого, кто имеет эту ошибку. Я добавлю весь код из файла, потому что некоторые проблемы, возможно, связаны с импортом.
Это ошибка из консоли браузера:
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
Ошибка возникает при нажатии кнопки отправки. кнопка, когда код имеет вид, показанный ниже
<code>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)}
{console.log (ошибки)} Submit )} ); };
Но если я изменю <form onSubmit={handleSubmit}>
на
<form onSubmit={() => {
alert("formik submitting")
}}>
, то ошибки нет, но она явно бесполезна, потому что в этом случае это уже не форма Formik, проверка не делается, et c ...