Skip to content
On this page

屏幕聚焦时刷新数据

适用场景

有些数据在 APP 处于后台时有了更新,在重新处于前台时希望用户能看到,所以要有屏幕聚焦时刷新数据的机制。

并不是所有页面、所有请求都需要刷新,原则上,只有非常有必要让用户看到新数据的场景才适用,比如文章的评论数、点赞数等,不多举例。

方案

很简单,监听documentvisibilitychange即可,只要document.hidden为假值,就说明页面聚焦。

APP 的 Webview 都支持这个事件,当 APP 转后台再转前台时也适用。

未开启 keep-alive:

js
created() {
  document.addEventListener('visibilitychange', this.visibilitychange);
},
beforeDestory() {
  document.removeEventListener('visibilitychange', this.visibilitychange);
},
methods: {
  visibilitychange() {
    if (!document.hidden) {
      // 重新请求
    }
  }
}

已开启 keep-alive:

js
activated() {
  document.addEventListener('visibilitychange', this.visibilitychange);
}
deactivated() {
  document.removeEventListener('visibilitychange', this.visibilitychange);
},
methods: {
  visibilitychange() {
    if (!document.hidden) {
      // 重新请求
    }
  }
}

杨亮的前端解决方案