标准方法
传参页面在 navigateTo 等路由方法中设置参数:
wx.navigateTo({
url: 'targetPage?param1=value1¶m2=value2'
})
接收页面在 onLoad 中接收参数:
Page({
onLoad: function (options) {
console.log(options.param1) // 输出 value1
console.log(options.param2) // 输出 value2
}
})
推荐方法
以上方法在传参过程中,如果 url 过长或者参数中包含中文等特殊情况会导致参数接收错误。因此推荐将参数进行 encodeURIComponent 编码,然后接收参数时再 decodeURIComponent 解码。
同时,很多时候我们可能需要将整个对象数据作为一个参数传递过去,比如说有一个 order 对象,将 order 对象作为参数传递可以避免一项一项的传参。
{
id:1,
no:"202402231640001021",
amount:19800,
}
我们可以用 JSON.stringify() 和 JSON.parse() 进行对象的转换和解析。因此综合一下,最优的微信小程序页面传参方法如下:
//传参页面
wx.navigateTo({
url: 'targetPage?order=' + encodeURIComponent(JSON.stringify(order))
})
//接收页面
onLoad: function(options) {
const order = JSON.parse(decodeURIComponent(options.order));
console.log(order)
}
上述代码也是 uni-app 官方示例中的写法,因此还是可以经得住考验的,推荐大家使用。