最近公司商城项目,有个小问题,就是在商品详情页>购物车页>确认下单页>支付成功和取消支付都会前往订单详情页。当时我没想这么多就全部跳转都用了navigateTo,这样做的话,第一个问题产生了,业务需要在支付成功后加多一个支付成功的页面,这样navigateTo就可能会超过五层限制;第二个问题就是,在确认支付页面无论支付失败还是支付成功都会跳到下一级页面,确认支付的下一个页面返回时,应该返回到购物车页面,不返回到确认订单页。
首页我想到的是,在使用页面卸载时的生命周期,如果用户返回了,就跳转到购物车页面。但是这样的话就会出现新的问题(具体问题就不细说了)。于是我细想了一下小程序的几个路由,发现了navifateTo和redirectTo配合使用就可以解决业务上的两个问题了。
注意:1.wx.navigateTo 和 wx.redirectTo 不允许跳转到 tabbar 页面,只能用 wx.switchTab 跳转到 tabbar 页面
2.wx.navigateTo保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack
可以返回到原页面
3.wx.navigateTo 不会将旧页面出栈
4.wx.redirectTo 会将旧页面出栈,再将需要跳转到的页面入栈
小程序在navigateTo五层之后,就不会能再入栈。
解决思路:商品列表 navigateTo 商品详情 navigateTo 购物车 navigateTo 确认订单 redirectTo 订单详情或者其他页面,这样再其他页面返回的时候就是购物车了。
购物车再返回就是商品详情页,然后一直返回到商品列表页
貌似表达得有点凌乱!