Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在Formik中创建验证时出现错误?_Javascript_Reactjs - Fatal编程技术网

Javascript 为什么在Formik中创建验证时出现错误?

Javascript 为什么在Formik中创建验证时出现错误?,javascript,reactjs,Javascript,Reactjs,我使用“Formik”库实现表单 我有以下代码: import { useFormik } from 'formik'; import * as yup from 'yup'; import FInput from './FInput/FInput'; const Form = () => { const {handleSubmit, values, handleChange} = useFormik({ initialValues: { user

我使用“Formik”库实现表单

我有以下代码:

import { useFormik } from 'formik';
import * as yup from 'yup';
import FInput from './FInput/FInput';

const Form = () => {
    const {handleSubmit, values, handleChange} = useFormik({
      initialValues: {
          username: '',
          email: '',
          password: '',
          confirm_password: '',
      },
        validationSchema: yup.object().shape( schema: {
          username: yup.string()                            // the error here
           .required('This field is required'),
          email: yup.string()
           .required('This field is required')
           .email('This field is required'),
          password: yup.string()
           .required('This field is required')
           .min(6, 'This password is too short')
           .max(30, 'This passwors is too long'),
        confirm_password: yup.string()
        .oneOf([yup.ref(key:'password'), null])
        .required('This field is required'),                                    
      }),
      onSubmit: (formValues) => {
          console.log('submit', formValues);
      },    
    });
    
   return (
   <form className="fform" onSubmit={handleSubmit}>
       <FInput
         label="username"
         id="username" 
         inputProps={{
           name:'username',
           value: values.username,
           onChange: handleChange,
       }}
       />
      <FInput
         label="email"
         id="email" 
         inputProps={{
           name:'email',
           value: values.email,
           onChange: handleChange,
           type: 'email',
       }}
       />
       <FInput
         label="password"
         id="password" 
         inputProps={{
           name:'password',
           value: values.password,
           onChange: handleChange,
           type:'password',
       }}
       />
       <FInput
         label="Confirm password"
         id="confirm_password" 
         inputProps={{
           name:'confirm_password',
           value: values.confirm_password,
           onChange: handleChange,
           type:'password',
       }}
       />
       <button type="submit">Submit Form</button>
   </form>
   );
};

export default Form;

从'formik'导入{useFormik};
从“是”以是的形式导入*;
从“./FInput/FInput”导入FInput;
常数形式=()=>{
常量{handleSubmit,value,handleChange}=useFormik({
初始值:{
用户名:“”,
电子邮件:“”,
密码:“”,
确认密码:“”,
},
validationSchema:yup.object().shape(架构:{
用户名:yup.string()//这里的错误
.required(“此字段为必填项”),
电子邮件:yup.string()
.required('此字段为必填项')
.email(“此字段为必填项”),
密码:yup.string()
.required('此字段为必填项')
.min(6,‘此密码太短’)
.max(30,“此密码太长”),
确认密码:yup.string()
.oneOf([yup.ref(key:'password'),null])
.required(“此字段为必填项”),
}),
onSubmit:(formValues)=>{
console.log('submit',formValues);
},    
});
返回(
提交表格
);
};
导出默认表单;
我有一个错误:

第18:25行:分析错误:意外的保留类型字符串

18 |用户名:yup.string()

顺便说一下,
username
在文本编辑器中不会以彩色突出显示。
如何修复错误?我已多次查看代码,无法理解错误的原因。请帮助解决此问题。

object.shape
API将包含字段的对象作为参数

Formik的Yup定义必须是:

validationSchema: yup.object().shape({
  username: yup.string()                            
           .required('This field is required'),
  email: yup.string()
           .required('This field is required')
           .email('This field is required'),
  password: yup.string()
           .required('This field is required')
           .min(6, 'This password is too short')
           .max(30, 'This passwors is too long'),
  confirm_password: yup.string()
        .oneOf([yup.ref(key:'password'), null])
        .required('This field is required'),   
})