通过获取页面栈来刷新页面

// 刷新上一个页面
  __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不会变
    })
  },

猜你喜欢

转载自www.cnblogs.com/qq254980080/p/11909931.html