微信小程式攜帶引數跳轉頁面/獲取頁面棧

樑雨季發表於2020-08-13

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

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

相關文章