小程序页面跳转时传参如何传对象

本文探讨了在小程序中进行页面跳转时如何传递对象参数。通过将对象转换为字符串并利用URL进行传递,然后在目标页面使用JSON.parse进行解析。然而,需要注意的是,这种方法可能遇到特殊字符导致的解析问题,需要进行适当的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小程序中页面跳转传参对象问题

简单的参数传递
使用url传递参数
wx.navigateTo({
	url:'/pages/detail/detail?query='+ encodeQuery    // 拼接
    url: `/pages/detail/detail?query=${encodeQuery}`   // 模板字符串
});
在页面的onLoad生命周期中接收
onLoad: function (options) {
  console.log(options);
}
对象传递
将对象转换为字符串
页面接收传递过来的字符串将其转为对象
对象传递问题

JSON.parse 方法无法解析包含“?“、”&”之类的字符

  • 拼接或者使用es6模板字符串的写法,通过url传递
const query = JSON.stringify(item);
//直接转字符串 ,在下个页面转对象的时候会报错,
// 使用encodeURIComponent转码
const encodeQuery = encodeURIComponent(query);
wx.navigateTo({
	url:'/pages/detail/detail?query='+ encodeQuery    // 拼接
    url: `/pages/detail/detail?query=${encodeQuery}`   // 模板字符串
});
  • 在跳转到的页面的onLoad生命周期里,接收传递的参数
onLoad: function (options) {
  console.log(options);
  const query = decodeURIComponent(options.query);
  const decodeQuery = JSON.parse(query);
  console.log(decodeQuery);
}
### 微信小程序页面跳转传递参数的方法 在微信小程序中,可以通过`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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值