Taro页面跳转后为什么无法返回首页?
在Taro项目里配置了路由,从首页跳转到分类页后,点击返回按钮总是直接退出小程序,而不是回到首页。明明在config.json里设置了首页路径是’/’,也尝试过用Taro.reLaunch和Taro.navigateBack,但都没用。
// config.json路由配置片段
{
"pages": [
"/pages/index/index",
"/pages/category/category"
],
"subPackages": [],
"condition": {}
}
// 分类页返回按钮代码
控制台没有报错,但无论怎么跳转都回不到首页,只能重新启动小程序。是不是路由层级有问题?或者需要在跳转时特别指定路径?
Taro.navigateTo而不是Taro.reLaunch,因为reLaunch会关闭所有页面栈,导致返回失效。试试这样写跳转代码:另外,返回按钮的
delta值设置为 1 是对的,但前提是页面栈里确实有上一页。如果还是不行,直接用Taro.switchTab返回首页:我之前遇到过类似问题,基本都是页面栈被清空导致的,按这个改应该能解决。
Taro.navigateBack和小程序页面栈的理解有些偏差。Taro.navigateBack({ delta: 1 })的作用是从页面栈中返回上一级页面,但如果首页跳转到分类页后,页面栈里可能只剩下一个页面(分类页),所以直接就退出小程序了。你可以试试下面的方法:### 方法一:用
Taro.redirectTo如果你从分类页想回到首页,可以用
Taro.redirectTo,它会关闭当前页面并跳转到指定页面:### 方法二:用
Taro.switchTab如果首页是一个 TabBar 页面,建议用
Taro.switchTab,这是专门为 TabBar 页面设计的跳转方法:### 方法三:用
Taro.reLaunch如果不想保留页面栈,直接回到首页,可以用
Taro.reLaunch,它会关闭所有页面并跳转到指定页面:根据你的需求选择合适的方法。如果是普通页面跳转,推荐用
redirectTo;如果是 TabBar 页面,必须用switchTab;如果想强制回到首页,用reLaunch最稳妥。另外提醒一下,
navigateBack只适合页面栈中有多个页面时使用,否则就会出现你现在的这种情况。希望这能解决你的问题!