You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native使用createMaterialTopTabNavigator无法跳转页面问题求助

问题根因
  • 入口挂载的路由容器错误:你当前App.js里直接返回的是顶部标签导航的AppContainer,这个容器只注册了3个标签页路由,完全没有包含你在Routes.js里配置的Buy页面,所以调用navigation.navigate("Buy")找不到目标路由,自然跳转失败。
  • 嵌套导航作用域问题:顶部标签导航是嵌套在根Stack导航下的子导航器,子导航器的navigation默认只能识别当前导航器内的路由,要跳转到父级Stack的路由需要确保根路由容器被正确挂载。
解决步骤
  1. 首先修改App.js的入口挂载对象,将原来的标签导航容器替换为Routes.js导出的完整根路由容器:
// 替换后的App.js完整代码
import Routes from './Routes'; // 此处路径替换为你项目中Routes.js的实际路径
const App=()=>{
  return <Routes />;
}
export default App;
  1. 如果修改入口后跳转仍失败,调整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>
  )
}
  1. 冗余配置清理:Routes.js中注册的Header路由没有实际作用,可以直接删除避免路由冲突。
验证方式

修改完成后重启项目,点击红色按钮即可正常跳转到Buy页面。

内容的提问来源于stack exchange,提问作者MR Int

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:06:04