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-screenreact-native-screensreact-native-safe-area-context
无需手动指定版本,Snack会自动匹配当前SDK的兼容版本。
3. 清除缓存重启Snack
点击Snack右上角的「重启」按钮,清除缓存后重新构建项目,不少依赖冲突问题都能通过重启解决。如果仍未修复,可将项目导出到本地,执行expo start --clear清除本地缓存并测试正常后,再重新导入到Snack。
4. 排查第三方库冲突
如果你的项目使用了第三方UI库或自定义导航组件,可暂时移除这些库,逐步排查是否是某个库依赖旧版React Navigation导致的冲突。
验证
修改完成后先确认Web端运行正常,再切换到iOS/Android设备预览,查看报错是否消失。
内容的提问来源于stack exchange,提问作者EmiH
相关产品推荐
相关产品推荐

