// 更新2018/11/20:现在小程序的页面栈长度为10
更正 2018/11/20:
经过一段时间的实践,我发现以前方法存在很多问题,比如 getCurrentPages 方法并不在官方的 API 列表中,route 属性是私有的,存在被废弃/替代的可能;又比如原来的代码掺杂了许多业务无关的逻辑,变得冗余,不易后期维护。
现在要实现原来的需求,我更推荐这样做:
onLoad() {
this.init()
}
init() {
this.checkAuth()
.then(this.fetchData)
}
checkAuth() {
// check authorization,return a Promise
}
fetchData() {
// fetch api and render page
}
更正完毕
需求:
小程序需要判断用户是否登录,来显示不同的内容。当登录失效后需要重新登录并刷新页面,一般我们用 redirect 或者 switchTab 方法进行页面间的跳转,通过getCurrentPages() 拿到页面栈(数组,最多510个),最后一个就是当前页面的路径。
自然而然想到这样来刷新当前页:
const reload= () => {
let pages = getCurrentPages()
if (pages.length === 0) return
let curPage = pages[pages.length - 1].__route__;
wx.redirectTo({
url: '/' + curPage
})
}
这段代码在小程序内页工作的很好,但一到tab页就GG思密达了——并!不!会!刷!新!
下面的方法可以解决:
const reload= () => {
let pages = getCurrentPages()
if (pages.length === 0) return
let curPage = pages[pages.length - 1];
curPage.onShow();
}