使用Formik和Yup时出现Uncaught TypeError错误该如何解决?
解决Formik中Uncaught TypeError: (intermediate value)(...) is not a function错误
错误原因
你的代码里validationSchema参数被错误地用对象包裹({formSchema}),Formik的useFormik钩子要求直接传入验证Schema对象,而非包含Schema的对象。这种写法会导致Formik无法正确初始化验证逻辑,进而抛出类型错误。
修正后的代码
const {values, handleChange, handleSubmit, errors} = useFormik({ initialValues: { name: '', address: '', latitude: '', longitude: '', nit: '', category: '', email: '', }, validationSchema: formSchema, // 直接传入formSchema,不要用对象包裹 validateOnChange: false, onSubmit: (values) => console.log(values), // 显式接收values参数,避免作用域问题 })
额外注意点
validateOnChange: false的配置是有效的,它会关闭输入变化时的自动验证,仅在提交时触发验证,符合需求。- 原代码中
onSubmit的箭头函数未接收values参数,虽然部分场景下能通过闭包获取,但显式传入参数是更规范的写法,可避免潜在作用域问题。
内容的提问来源于stack exchange,提问作者Alexander Rincón S.
相关产品推荐
相关产品推荐

