微信小程序redirect 到tab不刷新

// 更新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();
}
 
posted @ 2017-05-19 11:20  Liaofy  阅读(2358)  评论(2编辑  收藏  举报