React Native中navigation.goBack不生效,点击返回停留在Todos页面如何解决
问题原因
你在嵌套的堆栈导航器外层额外添加了一层独立的NavigationContainer,违反了React Navigation的使用规范:
- 整个React Native应用仅需要保留**最外层一个根
NavigationContainer**即可,所有嵌套的子导航器(Tab导航、Stack导航等)都不需要重复包裹NavigationContainer - 你给子导航的
NavigationContainer设置了independent={true},进一步隔离了子导航栈和全局导航的上下文,导致goBack无法正确识别上一级路由,出现点击返回无响应的问题
修复方案
直接删除DailyTab组件里多余的NavigationContainer包裹即可,修改后的代码如下:
const DailyTab = () => { // 移除外层的NavigationContainer,仅保留Stack.Navigator逻辑 return ( <Stack.Navigator initialRouteName="Daily"> <Stack.Screen name="Daily" component={Daily} options={{headerShown: false}} /> <Stack.Screen name="Todos" component={Todos} options={{headerShown: false}} /> </Stack.Navigator> ); };
如果需要临时验证效果,也可以把Todos组件里的navigation.goBack()替换为navigation.navigate('Daily'),但本质还是要删除多余的导航容器才能彻底解决问题。
内容的提问来源于stack exchange,提问作者Pro
相关产品推荐
相关产品推荐

