【微信小程序】关于wx.redirectTo路由跳转后左上角仍有返回上一页面按钮问题和小程序页面栈理解

问题描述

项目是做一个支付小程序,流程上要求用户支付成功一笔后,如果想继续支付第二笔,必须重新回到小程序主页。因为中间穿插多个功能和支付信息展示,从支付开始到完成一共有4个页面。

返回按钮如图所示

因为上述流程限制我从网上查阅资料,发现返回上一级按钮与路由方式有关。
wx.navigateTo保留当前页面并跳转,所以会出现返回按钮。
wx.redirectTowx.reLaunch都是关闭页面后跳转,区别是一个只关闭当前页面,一个关闭所有页面。

所有论坛和文章都是说使用wx.redirectTo路由后不会出现返回按钮。
但是事实并非如此,在项目里我也是使用的wx.redirectTo方法跳转到结算详情页面的,但如上图所示,依然出现了返回按钮。

这里直接说解决方法:需要用wx.reLaunch进行路由


原因分析:

“小程序页面栈”概念的引入

在微信小程序中,页面栈(Page Stack)指的是一个用来管理页面导航的栈结构。每当你在小程序中进行页面跳转,当前页面会被压入栈中,而新页面会显示在顶部。用户可以通过“返回”操作将之前的页面从栈中弹出。

主要概念:

页面栈的基本操作:
  • 页面入栈:每次调用 wx.navigateTo 方法时,当前页面会被推入栈中,新页面会显示在顶部。
  • 页面出栈:调用 wx.navigateBack 方法时,当前页面会被从栈中移除,之前的页面会恢复显示。
    栈的限制:

*微信小程序的页面栈最大深度是 10 层。如果页面栈深度达到上限,无法再继续压入新页面,需要先返回某些页面才能继续导航。

页面栈的操作API:
  • wx.navigateTo(Object):打开新页面并将当前页面推入栈中。
  • wx.redirectTo(Object):关闭当前页面并打开新页面,不会保留当前页面在栈中。
  • wx.reLaunch(Object):关闭所有页面并打开新页面。
  • wx.navigateBack(Object):关闭当前页面,返回上一个页面,可以设置 delta 属性返回多级页面.

也就是说,是否存在返回按钮和路由方法无直接关系,与页面栈内是否有页面有关系。当页面栈内有页面时(例如在当前页面之前使用了wx.navigateTo),跳转后一定会出现返回按钮。反之则不会出现返回按钮。
我的项目就是在Page2跳转Page3的时候使用了wx.navigateTo方法,而Page3跳转Page4(需要禁止用户返回的页面)的时候仅使用wx.redirectTo而未使用wx.reLaunch导致显示Page4时仍有页面未关闭,才会出现返回按钮。


解决方案:

  1. 如果项目流程情况与我的一致,只需要在某个页面限制用户的返回,前面的页面没有限制。就只需要在跳转需要限制返回的页面时使用wx.reLaunch路由方法即可。
  2. 如果在流程的每个页面都禁止用户返回,就需要在跳转时都使用wx.redirectTowx.reLaunch,而不能使用wx.navigateTo路由方法。

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值