javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > uniapp刷新本页面

uniapp中刷新本页面的三种方法

作者:DC...

这篇文章主要给大家介绍了关于uniapp中刷新本页面的三种方法,刷新页面的具体逻辑可以根据实际需求进行编写,文中通过代码介绍的非常详细,需要的朋友可以参考下

方法一

利用路由,强制uniapp刷新当前页面

setTimeout(() => {
	this.$router.go(0)
}, 500)

方法二

关闭当前页面,跳转到应用内的某给页面(如果想刷新当前页面也可以使用该方法):

uni.redirectTo({
    url: '../details/details?gid=' + this.gid //写你的路径
});

还可用定时器来对该方法进行优化,使其稍微延缓动画

setTimeout( () => {
    uni.redirectTo({
       url: '../details/details?gid=' + this.gid
    });	
}, 500)

方法三

通过获取该页面实例执行其内部的生命周期方法来刷新页面

    reload() {
        // 页面重载
        const pages = getCurrentPages()
        // 声明一个pages使用getCurrentPages方法
        const curPage = pages[pages.length - 1]
        // 声明一个当前页面
        curPage.onLoad(curPage.options) // 传入参数
        curPage.onShow()
        curPage.onReady()
        // 执行刷新
    },

补充:uniapp如何根据路由手动onload刷新某一个页面

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)
					}
				}
			})

总结 

到此这篇关于uniapp中刷新本页面的三种方法的文章就介绍到这了,更多相关uniapp刷新本页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文