微信小程序携带参数跳转页面/获取页面栈

页面跳转携带参数(以传递两个参数为例)

a.wxml 页面传递
1 <navigator url="/pages/b/b?id=1&sid='289'"> <navigator>

wx.navigateTo跳转携带参数
1 wx.navigateTo({
2   url: '/pages/a/a?id=1 + "&tu=" + 'a.jpg'
3 });

多个参数使用 & 连接 也可以写成这样(提倡)
1 var id=that.data.id; 
2 var tu = that.data.id;
3 wx.navigateTo({
4   url: `/pages/a/a?id=${id}&tu=${tu}`
5 });


需要携带的参数是个对象和数组时如何?抱歉,不可以!

这时可以将对象和数组转成字符串
   1 let args = JSON.stringify(params);  // 转成字符串携带
2 wx.navigateTo({
3   url: `/pages/a/a?args=${args}`
4 });

跳转页面进行解析即可,在onload中捕获参数
   1 let args = JSON.parse(options.args);  // 解析回对象或字符串
 
  当需要携带的参数太大,数据多如何?比如购物车到结算页面,大量参数需要从购物车获取,这样传值就太恶心了!
 
  可以隔空取参数!!!
 
  微信有提供这样的api吗?🐎,抱歉,没有!
  但提供了获取页面栈的方法!
 
 1.  let pages = getCurrentPages();
 2.  let that = pages[pages.length - 2];
 
 获取上一个页面的信息
 1. that.data 就为上一个页面的data数据
 
 操作上一个页面的显示
 2. that.setData({
 3.   url: false  //   上一个页面的参数设置
 4.  })
 
#是不是很🐂!当然可以将页面栈的方法封装起来,方便调用
注意:该方式和前一个页面的耦合在一起了,所以谨慎使用,如果前一个页面是通过重定向跳转的,就无法获取到该页面的数据了,
应重定向跳转后该页面会关闭,所以上一个页面将会变成上上个页面。(wx.redirectTo 方法跳转)
 
对于单独页面来说,由于要获取上一个页面的数据,调试起来就有点烦了!!!
 
明确的情况下使用还是可以的,哈。
 
wx.switchTab方法跳转导航页,无法携带参数,携带了也无效?
这时就可以通过本地的存储来缓存参数了,将参数缓存,跳转成功后取出,之后删掉缓存
 
 
声明:以上是个人的总结,由于知识面不同,难免有疏漏,希望指出!
 
posted @ 2020-08-13 17:55  梁雨季  阅读(1243)  评论(0编辑  收藏  举报