You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中Formik验证触发栈溢出及Formik未定义问题求助

React Native Formik崩溃问题解决方案

1. 修复Formik导入错误

Cannot read property 'Formik' of undefined 核心原因是Formik组件未正确导入。确认导入语句:

// 正确的默认导入
import Formik from 'formik';
// 或命名导入(适配Formik新版本)
import { Formik } from 'formik';

如果导入方式错误(比如使用import * as Formik from 'formik'却直接用<Formik>),会导致组件引用为undefined,进而触发后续栈溢出问题。

2. 规范Yup验证Schema写法

确保Yup已正确导入,同时简化Schema定义避免解析异常:

import * as Yup from 'yup';

const validationSchema = Yup.object().shape({
  first_name: Yup.string().required('First name is required')
});

若Yup未导入或Schema格式错误,会导致Formik内部校验逻辑异常,引发无限循环校验,触发栈溢出。

3. 排查自定义Input组件的循环渲染问题

Maximum call stack size exceeded 通常是无限循环渲染导致的。先替换为React Native原生TextInput测试:

{({handleChange, handleBlur, values, errors, touched}) => (
  <TextInput
    value={values.first_name}
    onChangeText={handleChange('first_name')}
    onBlur={handleBlur('first_name')}
    placeholder="First Name"
  />
)}

如果原生组件正常,说明自定义Input组件内部存在问题:比如onChange事件中直接修改父组件状态、错误触发重复渲染等,需排查组件内部逻辑。

4. 清除缓存并重启项目

React Native缓存可能导致依赖加载异常,执行以下命令:

# 重置metro缓存
npx react-native start --reset-cache
# 重新运行项目
npx react-native run-android # 针对Android
# npx react-native run-ios # 针对iOS

内容的提问来源于stack exchange,提问作者Rooban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:45:07