我們在微信小程序開發頁面棧獲取上會有兩種訴求
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個元素
}