关于 Vue2.0 路由开启 keep-alive 时需要注意的地方 - CHOK师兄 - 博客园

Vue2.0 做应用必有的需求就是页面数据需要做缓存,不用每次进入页面都要把数据重新请求一遍,每次页面切换都有段等待数据相应时间,这个用户体验可想有多么蛋疼,所以页面缓存是必要的,啥时候需要更新页面数据呢?可以监听状态变化,或者是手动下拉刷新重新请求数据,酱紫,我想用户体验会做的更好。

废话不多说直接上码,一般是在 src/App.vue 设置开启 keep-alive 实现页面数据缓存:

<template>
<keep-alive>

<router-view></router-view>

</keep-alive>
</template>

列举几个常用的 hook 方法,如下:

复制代码; "复制代码")

export default {
data() { return {


}

},
created: function() {

console.log("the hook of created is done!");

},
mounted: function() {

console.log("the hook of mounted is done!");

},
activated: function() {

console.log("the hook of activated is done!");

},
deactivated: function() {

console.log("the hook of deactivated is done!");

}
}

复制代码; "复制代码")

首次进来 hook 的触发顺序 created-> mounted-> activated,退出时触发 deactivated: 

// 控制台打印结果
the hook of created is done! the hook of mounted is done! the hook of activated is done! the hook of deactivated is done!

二次进来 hook 只触发 activated,退出时触发 deactivated: 

// 控制台打印结果
the hook of activated is done! the hook of deactivated is done!

所以这就是为什么有些人开启 keep-alive 之后,createdmounted 注册的 pageInt 方法不触发的原因了,因为 keep-alive 把它们屏蔽了,也就是把数据缓存起来,所以不再请求。

如果你的某些页面一定要实时请求,你可以直接在 activated 这个 hookpageInt,就不要在 createdmounted 上面注册 pageInt 方法了。

还有你可以选择性 pageInt,比如监听状态变化,包括但不限于监听路由的变化,某参数的变化,某时间节点的变化等等。


Original url: Access
Created at: 2019-03-28 19:53:31
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论