React Native使用createMaterialTopTabNavigator无法跳转页面问题求助
问题根因
- 入口挂载的路由容器错误:你当前App.js里直接返回的是顶部标签导航的
AppContainer,这个容器只注册了3个标签页路由,完全没有包含你在Routes.js里配置的Buy页面,所以调用navigation.navigate("Buy")找不到目标路由,自然跳转失败。 - 嵌套导航作用域问题:顶部标签导航是嵌套在根Stack导航下的子导航器,子导航器的
navigation默认只能识别当前导航器内的路由,要跳转到父级Stack的路由需要确保根路由容器被正确挂载。
解决步骤
- 首先修改App.js的入口挂载对象,将原来的标签导航容器替换为Routes.js导出的完整根路由容器:
// 替换后的App.js完整代码 import Routes from './Routes'; // 此处路径替换为你项目中Routes.js的实际路径 const App=()=>{ return <Routes />; } export default App;
- 如果修改入口后跳转仍失败,调整aa组件的跳转逻辑,主动调用父级Stack导航的跳转方法即可:
function aa({ navigation }){ return( <TouchableOpacity // 两种写法二选一,优先试第一种,v4版本不生效再换第二种 onPressIn={()=>navigation.navigate("Buy")} // onPressIn={()=>navigation.dangerouslyGetParent().navigate("Buy")} style={{width:200,height:200,backgroundColor:"red"}}> </TouchableOpacity> ) }
- 冗余配置清理:Routes.js中注册的
Header路由没有实际作用,可以直接删除避免路由冲突。
验证方式
修改完成后重启项目,点击红色按钮即可正常跳转到Buy页面。
内容的提问来源于stack exchange,提问作者MR Int
相关产品推荐
相关产品推荐

