微信支付页面返回情况

原创
小哥 3年前 (2022-11-02) 阅读数 89 #大杂烩

1.返回上一页 beforePage

返回页面的同时刷新数据

var pages = getCurrentPages(); //当前页面
var beforePage = pages[pages.length - 2]; //前一页
wx.navigateBack({
  success: function () {
    beforePage.onLoad(); // 执行上一页onLoad方法
  }
});

二、回退 3 级页面 wx.navigateBack

当我们的页面跳转到第三级页面时,单击左上角的返回按钮可以直接返回到主页。

  • wx.navigateBack 此方法可以返回到接口。 在 onUnload 可以在触发时执行。但是,我发现这个方法确实可以返回首页,但他会一个接一个地返回界面,不能直接返回首页。

    onUnload:function(){ wx.navigateBack({ delta: 3 }) }

  • 正常 A -> B -> C 都是通过 wx.navigateTo 跳,所以 wx.navigateBack 如果要返回,则只能返回到上一个界面A 将出现该界面 C -> B -> A 的效果。
    如果你想实现 A -> B -> C 当 C 当您单击返回时, 实现直接 C -> A 这种效果只能是 A -> B 通过 wx.navigateTo 跳转 B -> C 通过 wx.redirectTo 跳跃,跳跃后触发器 B 这一页将被销毁,C 页面再次返回。 wx.navigateBack 会直接去 A 了。

    wx.redirectTo({ url: url })

三、回退 4 级别或更多页面,wx.reLaunch

onUnload() {
  console.log(返回按钮)
  wx.reLaunch({
    url: ../../pages/index
  })
}

4.返回多级页面,同时刷新

例如,我们现在希望在返回主页后刷新第四级页面。我们需要 onShow 方法调用 onLoad() 方法

  • 需要将页面带进来

    onShow() { this.onLoad({ uid: this.$parent.globalData.enterid }) }

  • 不需要包括该页面

    onShow() { this.onLoad() }

5.带参数返回上一页

  • 当前页面

    var pages = getCurrentPages(); //当前页面 var prevPage = pages[pages.length - 2]; //上个页面 // 直接分配给上一页 prevPage.setData({ params: this.data.params });

    wx.navigateBack({ delta: 1 })

  • 要跳转的页面

    data: { params: null, },

    onShow: function () { let pages = getCurrentPages(); let currPage = pages[pages.length - 1]; // 为所携带的参数赋值 this.setData({ params: currPage.data.params, }); }

经过测试,发现只有在 data 参数是在中定义的,不是写入的 onShow() 方法,您还可以获取从上一页传递的值。

6.对于携带不同参数的情况,最好不要跳转带参数的页面,最好使用全局变量。

比如:
从 A 页面到 B 页面皮带的对象 a = {name: 小明, age: 18}
从 C 页面到 B 页面皮带的对象 c = {pname: 小红, page: 17}
像这样的对象内部的字段名称是不同的,B获取对象后无法解析该页。

定义全局变量 e ,在 A 在页面中跳转之前设置

this.$parent.globalData.e.name = a.name;
this.$parent.globalData.e.age = a.age;
wx.navigateTo({
  url: B
})

定义全局变量 e ,在 C 在页面中跳转之前设置

this.$parent.globalData.e.name = c.pname;
this.$parent.globalData.e.age = c.page;
wx.navigateTo({
  url: B
})

在 B 页面 onLoad() 方法中的价值

this.obj = this.$parent.globalData.e,
console.log(obj.name);
console.log(obj.age);
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除