微信小程序传参解决方案

最近要开发一个公司内部使用的微信小程序,但是遇到页面传参的时候遇见了问题。

微信小程序中只有onload是可以接受参数的,而且官方文档中说的是,只有第一次加载的时候才会触发,导致我认为onLoad这个方法可能用不太上,因为页面复用之后,只加载一次,肯定是无法应用。

于是接下来我就考虑使用全局变量,来传递参数,然后再onShow里面用来获取全局变量,这样应该会得到效果。

但是,直到我发现,其实,onLoad方法其实在我们点击左上角的返回按钮之后再次进入,会重新执行,好吧,怪我没有仔细阅读官方文档,而且想一下,也不可能出现一个只能执行一次的智障方法啊。

上面全是废话,下面让我用代码来实践。

1、使用onLoad

跳转页面

queryMerOfSales: function (e){
    var merId = e.currentTarget.dataset.number;
    app.globalData.merDate.merId = merId;
    console.log(merId);
    wx.navigateTo({
      url: '/pages/merchantsDetail/merchantsDetail?merId=' + merId,
      success: function () {
        console.log('跳转到/pages/merchantsDetail/merchantsDetail成功');
      }
    })
  }

页面获取值:

onLoad: function(e){
    console.log("pages/merchantsDetail/merchantsDetail---->ononLoad事件触发");
    console.log("获取参数为:e.merId: " + e.merId);
},

结果:

实践后,如果点击页面左上角的返回按键,再次进入页面,确实会执行onLoad事件,那么为什么呢?

其实官方文档已经给出了我们原因

以及我们每次打开新页面的跳转方法wx.navigateTo,也给出了路由方式

所以只怪自己不细心,唉。如果想看详细信息,请自行百度微信开发文档,或者点击这里

2、使用全局变量

这种的话,就比较简单了,而且如果已经有了上面的onLoad,我感觉这种方式就很少会使用了吧。

获取全局变量

const app = getApp()

更改参数

    var merId = e.currentTarget.dataset.number;
    app.globalData.merDate.merId = merId;

获取参数

merId = app.globalData.merDate.merId;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值