使用navigation.reset从栈页面跳转至Tab导航失效,显示白屏
登录后跳转主页面并清除路由栈(解决白屏问题)
问题根源
直接调用navigation.reset跳转到MainRoute时,Tab导航器的内部路由栈未被初始化,导致TabBar和对应页面无法渲染,出现白屏。因为Main是嵌套的Tab导航组件,重置全局栈时必须同时指定Tab导航的初始路由。
修复代码
修改登录按钮的点击事件代码,在reset配置中嵌套Tab导航的初始路由:
navigation.reset({ index: 0, routes: [ { name: MainRoute, // 嵌套Tab导航的初始路由,对应你Tab.Screen中定义的第一个页面name(比如home) state: { routes: [{ name: home }] } } ] });
注意事项
- 确保
home常量与Main组件中Tab.Screen的name属性完全匹配,若你的Tab首个页面name是其他值(如HomeRoute),替换为对应常量即可。 - 该方式会彻底清空全局路由栈,仅保留主页面(含Tab导航的初始页面),同时正确初始化Tab内部路由,避免白屏。
内容的提问来源于stack exchange,提问作者Chup bae
相关产品推荐
相关产品推荐

