在开发微信小程序的时候遇到了登录成功后调用wx.redirectTo接口却无法转跳的问题。
控制台没有报错,所以代码应该没有问题,于是检查了几个可能导致无法转跳的原因:
- 目标页面没有在app.json中声明
- 目标页面的URL路径错误
- 页面展溢出(页面栈最多只能有10层,超过10层会发生溢出)
问题还是没有解决,后面查阅了一下,发现如果目标页面是TabBar页面也会导致wx.redirectTo无法转跳。
我在app.json中将pages/index/index设置为了TabBar页面
app.json
因此我把导航方式修改为wx.switchTab,果然可以正常的跳转到pages/index/index页面了。
查阅了微信官方文档,导航方式的注意点:
- wx.navigateTo
保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。 - wx.redirectTo
关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。 - wx.switchTab
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。 - wx.reLaunch
关闭所有页面,打开到应用内的某个页面。 - wx.navigateBack
关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。