加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vue2中的keep-alive使用总结及注意事项

发布时间:2020-12-17 02:40:01 所属栏目:百科 来源:网络整理
导读:keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。结合vue-router中使用,可以缓存某个view的整个内容。 基本使用如下: 一般有这样的需求,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不

keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。结合vue-router中使用,可以缓存某个view的整个内容。

基本使用如下:

一般有这样的需求,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页

有两个情况:

1. 直接点击浏览器的后退返回按钮。

2. 点击导航栏中的 /list的链接返回。

那么针对第一种情况下,我们直接通过后退按钮时,返回到列表页(/list) 是不需要请求数据。

针对第二种情况下,我们通过链接返回到列表页是需要请求数据。

所以这边有三种情况:

1. 默认进来列表页需要请求数据。

2. 进入详情页后,通过浏览器默认后退按钮返回,是不需要ajax的请求的。

3. 进入详情页后,通过点击链接返回到列表页后,也是需要发ajax请求的。

配置如下:

1. 入口文件 app.vue 的配置如下:

2. 在router中设置meta属性,设置 keepAlive: true 表示需要使用缓存,false的话表示不需要使用缓存。且添加滚动行为 scrollBehavior

router/index.js 的配置如下:

require(['@/views/list'],resolve),// 使用懒加载 meta: { keepAlive: true // true 表示需要使用缓存 } },{ path: '/list',// 使用懒加载 meta: { keepAlive: true // true 表示需要使用缓存 false表示不需要被缓存 } },{ path: '/detail',name: 'detail',component: resolve => require(['@/views/detail'],resolve) // 使用懒加载 } ],scrollBehavior (to,from,savedPosition) { // 保存到 meta 中,备用 to.meta.savedPosition = savedPosition; if (savedPosition) { return { x: 0,y: 0 }; } return {}; } }); export default router;

3. list.vue 代码如下:

vue

{{msg}}

4. detail.vue 代码如下:

{{msg}}

二:使用router.meta 扩展

假设现在有3个页面,需求如下:

1. 默认有A页面,A页面进来需要一个请求。

2. B页面跳转到A页面,A页面不需要重新请求。

3. C页面跳转到A页面,A页面需要重新请求。

实现方式如下:

在 A 路由里面设置 meta 属性:

require(['@/views/a'],meta: { keepAlive: true // true 表示需要使用缓存 } }

所以router/index下的所有代码变为如下:

Vue.use(Router);

require(['@/views/b'],resolve) },{ path: '/c',name: 'C',component: resolve => require(['@/views/c'],resolve) } ],y: 0 }; } return {}; } }); export default router;

在 B 组件里面设置 beforeRouteLeave

B组件所有代码如下:

{{msg}}

在 C 组件里面设置 beforeRouteLeave:

c组件所有代码如下:

{{msg}}

a组件内的所有的代码如下:

vue

{{msg}}

注意 b组件到a组件不重新请求数据 (包括点击链接和浏览器后退按钮),c组件到a组件请求数据(包括点击链接和浏览器后退按钮).

总结

以上所述是小编给大家介绍的vue2中的keep-alive使用总结及注意事项。编程之家 52php.cn 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读