• vue常见的keep-alive问题


    一、什么是keep-alive?

    keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。keep-alive 是一个抽象组件:它自身不会渲染成一个 DOM 元素,也不会出现在父组件链中。

    二、keep-alive的优点?

    在组件切换过程中 把切换出去的组件保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性

    三、keep-alive有三属性

    include - 字符串或正则表达,只有匹配的组件会被缓存
    max-数字,最多可以缓存多少组件实例
    exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存

    代码

    1. <keep-alive include="home">
    2. <router-view />
    3. </keep-alive>
    4. //这串代码表示home组件会被缓存,而其他路由没配置就不会被缓存

    四、keep-alive的使用会触发两个生命周期函数?

    • activated 在keep-alive组件激活之前也就是当显示组件时触发
    • deactivated 在keep-alive组件激活之后当隐藏缓存组件时触发

    五、使用场景

    使用原则:当我们在某些场景下不需要让页面重新加载时我们可以使用keepalive

    举个栗子:
    当我们从首页–>列表页–>商详页–>再返回,这时候列表页应该是需要keep-alive

    从首页–>列表页–>商详页–>返回到列表页(需要缓存)–>返回到首页(需要缓存)–>再次进入列表页(不需要缓存),这时候可以按需来控制页面的keep-alive

    在路由中设置keepAlive属性判断是否需要缓存

    1. {
    2. path: 'list',
    3. name: 'itemList', // 列表页
    4. component (resolve) {
    5. require(['@/pages/item/list'], resolve)
    6. },
    7. meta: {
    8. keepAlive: true,
    9. title: '列表页'
    10. }
    11. }

    使用 <keep-alive>

    1. <div id="app" class='wrapper'>
    2. <keep-alive>
    3. <!-- 需要缓存的视图组件 -->
    4. <router-view v-if="$route.meta.keepAlive"></router-view>
    5. </keep-alive>
    6. <!-- 不需要缓存的视图组件 -->
    7. <router-view v-if="!$route.meta.keepAlive"></router-view>
    8. </div>

    六、缓存后如何获取数据

    解决方案可以有以下两种:

    • beforeRouteEnter
    • activated

    beforeRouteEnter

    每次组件渲染的时候,都会执行beforeRouteEnter

    1. beforeRouteEnter(to, from, next){
    2. next(vm=>{
    3. console.log(vm)
    4. // 每次进入路由执行
    5. vm.getData() // 获取数据
    6. })
    7. },

    activated

    keep-alive缓存的组件被激活的时候,都会执行activated钩子

    1. activated(){
    2. this.getData() // 获取数据
    3. },

    注意:服务器端渲染期间acvtived不被调用。

  • 相关阅读:
    BLE架构与开源协议栈
    ==和equals()的区别
    CVT代码及修改
    在 CentOS 8 中删除旧的 Linux 系统内核
    集群数据库系统的配置及安装过程
    工业数字化供应链协同系统:赋能工业品供应链数智化,提升产业链流通效率
    机器学习 | MATLAB实现支持向量机分类ClassificationSVM参数设定
    【图像去雾】基于matlab颜色衰减先验图像去雾【含Matlab源码 2036期】
    Pytorch 最全入门介绍,Pytorch入门看这一篇就够了
    AI 人工智能之常见概率分布(1)
  • 原文地址:https://blog.csdn.net/m0_64346035/article/details/124929553