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

Expo Snack中(0,n.usePreventRemoveContext)非函数设备端报错求助

解决Expo Snack设备端usePreventRemoveContext is not a function报错

先搞清楚问题根源

usePreventRemoveContext是React Navigation内部使用的上下文钩子,你遇到的报错本质是React Navigation相关依赖与Expo Snack内置环境版本不兼容,或是依赖安装存在冲突/缺失——毕竟你的项目在本地能正常运行,说明代码逻辑没问题,问题出在Snack的依赖适配环节。

试试这些解决步骤

1. 统一React Navigation所有包的版本

在Snack的依赖面板中,将@react-navigation/native、@react-navigation/stack这类相关包的版本统一:

  • 先查看Snack右上角显示的Expo SDK版本(比如当前你的Snack使用的是SDK 49),React Navigation 6.x系列适配SDK 49,确保所有子包都使用6.x的同版本(例如统一用6.1.10)
  • 操作方式:删除现有的React Navigation相关依赖,重新添加指定版本的包,避免混装不同大版本的包。

2. 补全基础依赖包

React Navigation需要几个Expo基础包支持,在Snack的依赖面板中添加以下包:

  • expo-splash-screen
  • react-native-screens
  • react-native-safe-area-context
    无需手动指定版本,Snack会自动匹配当前SDK的兼容版本。

3. 清除缓存重启Snack

点击Snack右上角的「重启」按钮,清除缓存后重新构建项目,不少依赖冲突问题都能通过重启解决。如果仍未修复,可将项目导出到本地,执行expo start --clear清除本地缓存并测试正常后,再重新导入到Snack。

4. 排查第三方库冲突

如果你的项目使用了第三方UI库或自定义导航组件,可暂时移除这些库,逐步排查是否是某个库依赖旧版React Navigation导致的冲突。

验证

修改完成后先确认Web端运行正常,再切换到iOS/Android设备预览,查看报错是否消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:17:22