问题描述
我正在尝试让验证错误显示在触摸屏上,但是由于某些原因它们没有显示出来。我尝试按照Formik官方网站上的指南进行操作,但无济于事。我正在使用React-Bootstrap,Formik和Yup进行验证。我在做什么错了?
进口:
import * as React from 'react';
import { Container,Row,Col,Form } from 'react-bootstrap';
import { Formik } from 'formik';
import * as yup from 'yup';
验证模式:
const validationSchema = yup.object({
companyName: yup
.string()
.required('Company Name is required')
.min(3,'Minimum 3 characters allowed')
.max(100,'Maximum 100 characters allowed'),});
表格:
<Formik
validationSchema={validationSchema}
initialValues={{
companyName: '',}}
onSubmit={() => {}}
>
{({ errors,touched }) => (
<Form autoComplete='off'>
<Form.Group>
<Form.Label>
Company Name <span className='text-danger'>(*)</span>
</Form.Label>
<Form.Control type='text' name='companyName' placeholder='Enter Company Name' />
<Form.Control.Feedback type='invalid'>{errors.companyName}</Form.Control.Feedback>
</Form.Group>
</Form>
)}
</Formik>
解决方法
似乎您的输入字段未连接到Formik
。
您可以使用Formik中的Field
将输入连接到Formik。
import * as React from 'react';
import { Container,Row,Col,Form } from 'react-bootstrap';
import { Formik,Field } from 'formik';
import * as yup from 'yup';
const validationSchema = yup.object({
companyName: yup
.string()
.required('Company Name is required')
.min(3,'Minimum 3 characters allowed')
.max(100,'Maximum 100 characters allowed'),});
export default function App() {
return (
<Formik
validationSchema={validationSchema}
initialValues={{
companyName: '',}}
onSubmit={() => {}}
>
{({ errors,touched }) => (
<Form autoComplete='off'>
<Form.Group>
<Form.Label>
Company Name <span className='text-danger'>(*)</span>
</Form.Label>
<Field type='text' placeholder='Enter Company Name' name="companyName" />
<Form.Control.Feedback type='invalid'>{errors.companyName}</Form.Control.Feedback>
</Form.Group>
</Form>
)}
</Formik>
);
}