安装react-native-scroll-menu后安卓端触摸触发_UIManager未定义报错如何解决
报错来源
你使用的react-native-scroll-menu包已停止维护多年,仅适配React Native 0.59及更早版本。新版本React Native已移除全局注入的_UIManager变量,该包源码中仍直接引用未声明的_UIManager全局变量,且安卓端对未声明全局变量的校验规则比iOS更严格,因此仅安卓端触发触摸事件时抛出该报错。
解决方案
方案1:补丁修复(适用于不想替换组件的场景)
- 安装
patch-package用于持久化第三方包修改:
npm install patch-package --save-dev # 或 yarn add patch-package --dev
- 打开
node_modules/react-native-scroll-menu目录下的主源码文件(一般为ScrollMenu.js或index.js) - 在文件顶部添加
UIManager的正确导入:
import { UIManager } from 'react-native'
- 将文件中所有出现的
_UIManager替换为UIManager - 执行命令生成补丁文件,后续重新安装依赖会自动应用该修改:
npx patch-package react-native-scroll-menu
方案2:替换维护中的替代组件
react-native-scroll-menu已有超过5年未更新,后续还可能出现更多兼容性问题,可替换为仍在维护的同功能组件,例如react-native-scrollable-tab-view,或基于React Native官方ScrollView组件自行封装菜单逻辑,灵活适配项目需求。
内容的提问来源于stack exchange,提问作者rladuddbs123
相关产品推荐
相关产品推荐

