赞
踩
uniapp如何手动刷新要跳转到的页面?相信很多人百度查到的答案都是如下:
uni.switchTab({
url: '/pages/user/user',
success(){
let page = getCurrentPages().pop(); //跳转页面成功之后
if (!page) return;
page.onLoad(); //重新刷新页面
}
});
但是在我做的项目中,会出现莫名的bug,pop出来的页面不是想要的,而且后面修改页面跳转的时候可能要修改代码,根据页面栈pop出来页面刷新很难定位刷新到我们想要的页面。那么有没有什么办法可以根据路由定位到我们要刷新的页面呢,根据官方api,我们可以获取已渲染加载的页面数组let pages = getCurrentPages()
,同时每一个页面都有page.route()
获取该页面的路由。所有我们只要遍历已渲染加载的pages,再比较pages里面的路由在调用相应页面的onload事件就好了,代码如下:
uni.switchTab({
url : '/pages/test/test',
success() {
let pages = getCurrentPages();
for(let i = 0; i < pages.length; i ++){
let tmppg = pages[i];
if(tmppg.route == "pages/test/test"){
tmppg.onLoad();
}
// console.log('tmppg:' + tmppg)
// console.log('tmppg.route:' + tmppg.route)
}
}
})