Taro页面跳转后为什么无法返回首页?

西门梓玥 阅读 61

在Taro项目里配置了路由,从首页跳转到分类页后,点击返回按钮总是直接退出小程序,而不是回到首页。明明在config.json里设置了首页路径是’/’,也尝试过用Taro.reLaunch和Taro.navigateBack,但都没用。


// config.json路由配置片段
{
  "pages": [
    "/pages/index/index",
    "/pages/category/category"
  ],
  "subPackages": [],
  "condition": {}
}

// 分类页返回按钮代码

控制台没有报错,但无论怎么跳转都回不到首页,只能重新启动小程序。是不是路由层级有问题?或者需要在跳转时特别指定路径?

我来解答 赞 11 收藏
二维码
手机扫码查看
2 条解答
码农明月
问题出在路由层级和返回逻辑上。你从首页跳转到分类页时,应该用 Taro.navigateTo 而不是 Taro.reLaunch,因为 reLaunch 会关闭所有页面栈,导致返回失效。试试这样写跳转代码:

// 首页跳转到分类页
Taro.navigateTo({
url: '/pages/category/category'
})


另外,返回按钮的 delta 值设置为 1 是对的,但前提是页面栈里确实有上一页。如果还是不行,直接用 Taro.switchTab 返回首页:

// 分类页返回首页
Taro.switchTab({
url: '/pages/index/index'
})


我之前遇到过类似问题,基本都是页面栈被清空导致的,按这个改应该能解决。
点赞 1
2026-02-15 08:23
智颖的笔记
这个问题挺常见的,前端这块涉及到小程序的路由管理时确实容易踩坑。你的情况主要是对 Taro.navigateBack 和小程序页面栈的理解有些偏差。

Taro.navigateBack({ delta: 1 }) 的作用是从页面栈中返回上一级页面,但如果首页跳转到分类页后,页面栈里可能只剩下一个页面(分类页),所以直接就退出小程序了。你可以试试下面的方法:

### 方法一:用 Taro.redirectTo
如果你从分类页想回到首页,可以用 Taro.redirectTo,它会关闭当前页面并跳转到指定页面:
Taro.redirectTo({
url: '/pages/index/index'
})


### 方法二:用 Taro.switchTab
如果首页是一个 TabBar 页面,建议用 Taro.switchTab,这是专门为 TabBar 页面设计的跳转方法:
Taro.switchTab({
url: '/pages/index/index'
})


### 方法三:用 Taro.reLaunch
如果不想保留页面栈,直接回到首页,可以用 Taro.reLaunch,它会关闭所有页面并跳转到指定页面:
Taro.reLaunch({
url: '/pages/index/index'
})


根据你的需求选择合适的方法。如果是普通页面跳转,推荐用 redirectTo;如果是 TabBar 页面,必须用 switchTab;如果想强制回到首页,用 reLaunch 最稳妥。

另外提醒一下,navigateBack 只适合页面栈中有多个页面时使用,否则就会出现你现在的这种情况。希望这能解决你的问题!
点赞 10
2026-01-30 09:08