getCurrentPages():获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。
注意:不要尝试修改页面栈,会导致路由以及页面状态错误;
不要在App.onLaunch的时候调用getCurrentPages,此时page还没有生成。
后退刷新当前页面,可以在onShow中执行函数,或者利用getCurrentPages().
使用场景
- 进入小程序非默认首页时,需要提供放回页面的按钮或者执行其他事件
onShow() {
let pages = getCurrentPages(); //当前页面栈
if (pages.length == 1) {
//只有当前页面时执行的函数体
}
}
- 页面跳转后自动刷新
wx.switchTab({
url: "/pages/home/page",
success: function (e) {
let page = getCurrentPages().pop();//当前页面
if (page == undefined || page == null)
return;
page.onLoad();//或者其他操作
}
})
- 获取当前页面相关信息
let pages = getCurrentPages();//当前页面栈
let prePage = pages[pages.length - 1]; //当前页面 也可以写成 let prePage = pages.pop();
console.log(prePage.route)//输出路由路径
- 跨页面赋值
这种方法的弊端:因为进入 B 页面的入口可能是很多个。这样做,可能会导致获取到的页面实例不正确。
let pages = getCurrentPages();
let currPage = pages[pages.length - 1]; //当前页面
let prevPage = pages[pages.length - 2]; //上一个页面
//直接调用上一个页面的 setData() 方法,把数据存到上一个页面中去
prevPage.setData({
mdata:1
})