Appearance
屏幕聚焦时刷新数据
适用场景
有些数据在 APP 处于后台时有了更新,在重新处于前台时希望用户能看到,所以要有屏幕聚焦时刷新数据的机制。
并不是所有页面、所有请求都需要刷新,原则上,只有非常有必要让用户看到新数据的场景才适用,比如文章的评论数、点赞数等,不多举例。
方案
很简单,监听document
的visibilitychange
即可,只要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) {
// 重新请求
}
}
}