微信小程序如何实现页面传参

目录

前言

路径传递

在onLoad里接收参数

 其他位置获取参数

全局变量

数据缓存

事件通信

使用wx自定义小程序全局方法和全局变量 

总结


前言

只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 n 种页面方法。

路径传递

通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 ‘path?key=value&key2=value2’。

在onLoad里接收参数

案例:A页面带参数跳转到B页面
A页面跳转代码

goB(){
    wx.navigateTo({
      url: '/pages/B/index?id=value',
    })
  },

B页面接收代码

onLoad: function (options) {
	console.log('id', options.id)
}

上面的案例是字符串参数,但是很多情况下需要传递对象,如下方代码

Page({
  data: {
    userInfo:{
      name:'cym',
      age:16
    }
  },
  goB(){
    wx.navigateTo({
      url: '/pages/B/index?id='+this.data.userInfo,
    })
  },
})

如果使用上面同样的方式结构,输出的结果是:[object Object]

这个时候需要先把对象通过JSON.stringify(obj)将 object 对象转换为 JSON 字符串进行参数传递,再到接收页面通过JSON.parse解析使用。

A页面跳转代码

 goB(){
    let userStr = JSON.stringify(this.data.userInfo)
    wx.navigateTo({
      url: '/pages/B/index?id='+userStr,
    })
  }

B页面接收代码

onLoad: function (options) {
    console.log(
### 微信小程序页面跳转传递参数的方法 在微信小程序中,可以通过`wx.navigateTo`方法来实现页面间跳转的同时传递参数。对于简单的数据类型可以直接附加到URL后面作为查询字符串的一部分;而对于复杂的数据结构(如对象),则需先将其序列化为JSON字符串再进行传输。 #### 基本语法 当需要从一个页面导航至另一个新页面时,可调用如下API: ```javascript wx.navigateTo({ url: '目标页面路径?参数名1=值1&参数名2=值2...' }) ``` 其中,“?”之后的部分即是要发送给下一个页面的信息[^3]。 #### 实际案例展示 假设有一个列表页想要链接到详情页,并且希望把选中的项目信息一并带给后者处理,则可以在触发事件处理器内完成此操作: ```javascript // 列表项点击响应函数 function onItemTap(e){ let itemIndex = e.currentTarget.dataset.index; // 获取当前项目的详细资料 let selectedItemInfo = JSON.stringify(this.data.items[itemIndex]); // 执行页面切换动作并向目的地址追加所需携带的数据 wx.navigateTo({ url:`../detail/detailPage?itemData=${selectedItemInfo}` }); } ``` 上述代码片段展示了如何通过`JSON.stringify()`方法将JavaScript对象转换成JSON格式字符串以便于附着在请求链接上[^4]。 而在接收端——也就是被访问的目标页面中,应当重写其默认加载行为以读取这些传入的变量: ```javascript Page({ onLoad:function(option){ try { // 解析接收到的对象形式参数 this.setData({ receivedObject : JSON.parse(decodeURIComponent(option.itemData)) }) } catch(error) {} // 对其他简单类型的参数做相应处理... } }); ``` 这里利用了`decodeURIComponent()`解码可能存在的特殊字符编码问题,确保能正确解析原始数据[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端 贾公子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值