通过获取页面栈来刷新页面
Posted qq254980080
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过获取页面栈来刷新页面相关的知识,希望对你有一定的参考价值。
// 刷新上一个页面 __refreshBeforePage(){ let beforePage = getCurrentPages().shift() //上一个页面实例对象,getCurrentPages()获取到当前页面栈 if (beforePage == undefined || beforePage == null) return //只刷新上一个页面是pagea/my/my的页面 if (beforePage.route == ‘pages/my/my‘) { beforePage.onLoad() } },
// 刷新下一个页面 __refreshNextPage(){ let nextPage = getCurrentPages().pop() //下一个页面实例对象 if (nextPage == undefined || nextPage == null) return nextPage.onLoad() },
需要注意:
通过获取页面实例对象,触发onLoad()来刷新上一个/下一个页面时,onLoad()中必须是重置data才可以,this.setData({user: res.data[0]})
如果onLoad()中的data是拼接,this.setData({jobs: oldData.concat(res.data)}),则这种刷新方法有会出错,原因:
oldData的值不变->改变了数据库中oldData()的值,页面对象触发onLoad()->oldData新增res.data,但页面中oldData的值还是原来的,一直没变
__updateStatusTo0(id){ jobs.doc(id).update({ data: { status: 0 //这里修改了数据库中的值 } }) .then(res=>{ this.__refreshNextPage() //刷新下一页job-manage,但页面onLoad()中data是拼接处理,原数据oldData不会变 }) },
以上是关于通过获取页面栈来刷新页面的主要内容,如果未能解决你的问题,请参考以下文章