微信小程序攜帶參數跳轉頁面/獲取頁面棧

頁面跳轉攜帶參數(以傳遞兩個參數為例)

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方法跳轉導航頁,無法攜帶參數,攜帶了也無效?
這時就可以通過本地的存儲來緩存參數了,將參數緩存,跳轉成功後取出,之後刪掉緩存
 
 
聲明:以上是個人的總結,由於知識面不同,難免有疏漏,希望指出!