React Navigation返回页面时header及底部标签消失、页面冻结如何解决?
问题根因
该异常由导航依赖配置错误、版本兼容冲突导致,触发回退时页面渲染失效、交互无响应。
修复步骤
修正react-native-gesture-handler导入顺序
确保index.js中react-native-gesture-handler为第一个导入项,调整后代码如下:/** * @format */ // 第一行导入 import 'react-native-gesture-handler'; import React from 'react'; import {AppRegistry} from 'react-native'; import App from './App'; import {name as appName} from './app.json'; AppRegistry.registerComponent(appName, () => App);添加Reanimated Babel插件配置
2.x版本react-native-reanimated需要额外配置babel插件,否则会导致导航动画异常。在项目根目录babel.config.js中添加配置:module.exports = { presets: ['module:metro-react-native-babel-preset'], plugins: ['react-native-reanimated/plugin'], };配置完成后执行命令清空打包缓存重启服务:
npx react-native start --reset-cache降级react-native-screens兼容版本
当前使用的react-native-screens@3.9.0存在与@react-navigation/native-stack的兼容bug,会触发回退页面渲染异常。执行命令降级到稳定兼容版本:npm install react-native-screens@3.8.0 # 若使用yarn则执行 yarn add react-native-screens@3.8.0安卓端需要重新编译前清空原生构建缓存:
cd android && ./gradlew clean && cd ..校验安卓原生配置
检查android/app/src/main/AndroidManifest.xml中MainActivity的配置,确保已设置合理的窗口软键盘模式:<activity android:name=".MainActivity" android:windowSoftInputMode="adjustResize" <!-- 其余原有配置保持不变 --> >同时检查MainActivity.java中没有自定义的onBackPressed重写逻辑干扰导航回退事件。
所有配置修改完成后全量重新编译应用即可修复该问题。
内容的提问来源于stack exchange,提问作者Enver Köseler
相关产品推荐
相关产品推荐

