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

迁移Expo项目至RN 0.71.3后调用useState报空属性读取错误

问题诊断

你遇到的Cannot read property 'useState' of null错误,核心原因是组件导出方式错误,同时存在部分第三方依赖与React 18 + React Native 0.71.3不兼容的潜在问题。


解决方案

1. 修复组件导出(最紧急)

查看你的App.js最后一行:

export default App();

这是直接调用组件函数而非导出组件本身,导致React Hooks(如useState)脱离React渲染上下文执行,触发错误。

修改为正确的组件导出方式:

export default App;

2. 替换/升级不兼容依赖

项目中部分老旧库与React 18生态不兼容,建议调整:

  • react-native-datepicker:已停止维护,替换为你已安装的@react-native-community/datetimepicker
  • react-native-check-box:替换为@react-native-community/checkbox或React Native官方CheckBox组件
  • react-native-s3-upload:检查并升级到适配React 18的版本

3. 彻底清理缓存并重建

完成上述修改后,执行以下步骤清除缓存:

  • 删除依赖文件:
rm -rf node_modules package-lock.json
  • 重新安装依赖:
npx expo install
  • 清除Expo缓存并启动:
npx expo start --clear

4. 验证React版本一致性

确保所有依赖的React版本与项目声明的react: ^18.2.0一致,执行命令检查:

npm ls react

若发现依赖引用旧版React,需升级对应依赖或替换为兼容版本。


额外注意事项

  • React 18已弃用原生AppLoading,确保你使用的是expo-app-loading的正确导入方式:
import AppLoading from 'expo-app-loading';
  • 将import 'react-native-gesture-handler';放在App.js最顶部,确保它在其他组件前加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:52:01