微信小程序用户手势返回的巧妙处理
在微信小程序开发中,页面跳转和返回的逻辑处理至关重要。本文将针对一个具体的场景进行深入探讨:如何拦截用户的手势返回,并实现自定义的返回逻辑。
问题描述如下:小程序存在“提交订单”页面和“确认支付”页面。用户在“提交订单”页面提交订单后跳转到“确认支付”页面。然而,用户使用手机手势返回时,会直接返回到“提交订单”页面,而不是开发者期望的“订单详情”页面。即使监听路由栈变化也无法拦截这种手势返回。
如何才能在用户从“确认支付”页面手势返回时,强制跳转到“订单详情”页面呢?
解决方法的关键在于小程序的页面跳转API的选择。问题中提到的使用wx.navigateTo进行页面跳转,会导致页面之间形成一个栈结构,手势返回会沿着这个栈回退。要实现直接跳转到“订单详情”页面,而不经过“提交订单”页面,应该使用wx.redirectTo。
wx.redirectTo API 会关闭当前页面,跳转到应用内的某个页面。这意味着,当用户从“确认支付”页面使用手势返回时,由于“确认支付”页面已经被关闭,因此不会返回到之前的“提交订单”页面,而是直接返回到小程序的上一级页面,也就是开发者预设的“订单详情”页面。
需要注意的是,直接在“确认支付”页面拦截用户右滑返回并跳转到“订单详情”页面是不可行的。正确的做法是在用户从“确认支付”页面返回到“提交订单”页面后,再进行跳转到“订单详情”页面的逻辑处理。 因此,在“提交订单”页面跳转到“确认支付”页面时,务必使用wx.redirectTo,而不是wx.navigateTo。