微信小程序页面页面传参数的几种情况

4,079 阅读1分钟

传单个参数,如下:

参数传递:
wx.navigateTo({
  url: '../identify/identify?test=' + 'hello',
})

在下个identify页面获取时在onload方法中获取具体如下:
onload(option){
  if (option && option.test) {
      // 获取到上个页面传递的参数
      let temp = option.test
  }
}

传递多个参数

参数传递:
wx.navigateTo({
  url: '../identify/identify?test=' + 'hello&test1=' + 'hi',
})
下个identify页面获取时在onload方法中获取具体如下:
    if (option) {
      // 获取到上个页面传递的参数
      let temp = option.test
      let temp1 = option.test1
   }
}

当传递的参数为对象时

注意:

  1. 传递的参数为对象时,在下个页面无法直接获取,必须使用JSON.stringify()转换为字符串然后在下个页面使用JSON.parse()还原为对象;

  2. 当传递的对象数据中含有特殊字符串时,在下个页面使用JSON.parse()还原为对象时会报错。需要在上个页面将对象转化为字符串后使用encodeURIComponent进行编码,然后在下个页面先用decodeURIComponent进行解码在还原为对象。

具体操作如下:

参数传递:

let objTest = {
   name:'jxd',
   sex:'男',
   age:'18'
}
objTest = JSON.stringify(objTest) // 转为字符串
wx.navigateTo({
  url: '../identify/identify?test=' + encodeURIComponent(objTest), // 编码
})
下个identify页面获取时在onload方法中获取具体如下:
if (option && option.test) {
    // 获取到上个页面传递的参数
   let temp = decodeURIComponent(option.test) // 解码
   temp = JSON.parse(temp) // 还原为对象
   …… // 正常使用
}