微信小程序首頁的上一個頁面棧和當前頁面棧

我們在微信小程序開發頁面棧獲取上會有兩種訴求

1.獲取當前頁面棧

2.獲取上一個頁面棧

獲取當前頁面棧

其實這個就比較簡單,當前頁面最好獲取,而且微信官網文檔也提供了API

https://developers.weixin.qq.com/miniprogram/dev/reference/api/getCurrentPages.html

注意:

  • 不要嘗試修改頁面棧,會導致路由以及頁面狀態錯誤。
  • 不要在 App.onLaunch 的時候調用 getCurrentPages(),此時 page 還沒有生成。
// 獲取當前頁面路徑
export const getCurrentPageUrl = () => {
  return `/${getCurrentPages()[getCurrentPages().length - 1].route}`
}

獲取上一個頁面棧

這個有兩種情況需要考慮

1.如果是當前頁面是非首頁,我們可以很容易獲取到

2.如果是在首頁獲取上個頁面棧就需要用隱藏API wx.onAppRoute

非首頁獲取上一個頁面棧

export const getCurrentPageUrl = () => {
  return `/${getCurrentPages()[getCurrentPages().length - 2].route}`
}

在首頁獲取上一個頁面棧

爲了避免每個頁面都去存儲一下當前頁面棧,可以在app.js onShow 生命週期裏調用 wx.onAppRoute

  • app.js
  onShow() {
    // 此處採用store方法存儲pageId,從數組前面開始存儲
    wx.onAppRoute(e => {
      store.state.pageId.unshift(e.path)
    })
  }
  • index.js 首頁
onShow() {
    this.user.pageId[1]  // 上一個頁面id  這裏取第1個元素而不是第0個是因爲,比如首頁進入詳情頁,返回首頁,此時監聽路徑變化,這時候路徑是首頁,所以我們需要取第1個元素
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章