码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • vue中keep-alive的作用


    vue中keep-alive的作用

    • 1、什么是keep-alive?
    • 2、作用
    • 3、使用场景
    • 4、基本使用
      • 4.1、所有组件都缓存
      • 4.2、include:只有包裹的组件名被缓存
      • 4.3、exclude:只有包裹的组件名不会被缓存
      • 4.4、max:组件最多缓存的数量
      • 4.5、结合路由router,缓存部分组件
    • 5、新增的两个生命周期

    1、什么是keep-alive?

    keep-alive是Vue提供给我们的一个内置组件,会缓存不活动的组件实例,而不是销毁它们。作为标签使用包裹这需要缓存的组件。

    2、作用

    在组件切换过程中,把切换出的组件保存在内存中,防止重新渲染DOM,减少加载时间及性能消耗,提高用户体验。避免左慈重复渲染降低性能

    3、使用场景

    例:列表页面进入详情页面,我们想保存列表滚动的位置,就可以使用keep-alive保存列表页面的滚动位置。

    4、基本使用

    使用keep-alive以后会新增两个生命周期:

    1. activated:组件激活时使用
    2. deactivated:组件离开时调用

    **两个参数:**允许组件有条件的进行缓存

    1. include:包裹的组件名会被缓存
    2. exclude:包裹的组件名不会被缓存

    4.1、所有组件都缓存

    使用keep-alive标签将路由出口包裹

        <keep-alive>
          <router-view/>
        </keep-alive>
    
    • 1
    • 2
    • 3

    4.2、include:只有包裹的组件名被缓存

        <keep-alive include="keepAlive,VModel">
          <router-view/>
        </keep-alive>
    
    • 1
    • 2
    • 3

    4.3、exclude:只有包裹的组件名不会被缓存

        <keep-alive exclude="keepAlive,VModel">
          <router-view/>
        </keep-alive>
    
    • 1
    • 2
    • 3

    4.4、max:组件最多缓存的数量

        <keep-alive  max="2">
          <router-view/>
        </keep-alive>
    
    • 1
    • 2
    • 3

    4.5、结合路由router,缓存部分组件

    //路由文件中
    {
            path: '/keepAlive',
            name: 'keepAlive',
            component: () => import( '../components/keepAlive/keepAlive.vue'),
            meta: {
                keepAlive: true
            }
    
    //路由出口
    
        <keep-alive>
        //被缓存的组件
          <router-view v-if="$route.meta.keepAlive"/>
        </keep-alive>
        
        //不需要缓存的组件
        <router-view v-if="!$route.meta.keepAlive"/>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5、新增的两个生命周期

    keep-alive缓存了组件,beforeDestroy这个生命周期钩子函数还会执行么?

    不会。准确的说是不会直接调用。

    在默认情况下,没有使用keep-alive缓存组件,离开当前路由时,会直接调用beforeDestroy和destoyed来销毁。

    当使用keep-alive缓存组件,不会直接调用这个销毁周期函数,而是新增了两个钩子函数,activated和deactivated,当退出当前组件时,会执行deactivated这个钩子函数

    <template>
      <div class="keepAlive">
        <h1>{{ msg }}</h1>
        <input type="text"/>
        <button @click="$router.push('/VModel')">点击跳转到v-model的学习界面</button>
      </div>
    </template>
    
    <script>
    export default {
      name: "keepAlive",
      data() {
        return {
          msg: "vue中keep-alive的使用学习"
        }
      },
      beforeDestroy() {
        console.log("销毁前,调用么?不会直接调用");
      },
      activated() {
        //进入组件时执行
        console.log("组件激活了");
      },
      deactivated() {
        //离开了被缓存的组件时执行
        console.log("离开了当前组件");
      }
    }
    </script>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    在这里插入图片描述

  • 相关阅读:
    函数reshape(-1,)里的-1的意思
    HTML5期末考核大作业网站——卫生与健康HTML+CSS+JavaScript
    unity -- UGUI插件 LoopScrollRect
    进程间通信IPC-共享内存(System V)
    HTML学生作业网页 传统端午节节日 学生节日网页设计作业源码(HTML+CSS+JS)
    一起探秘,不可不知双向链表底层原理
    Git向Gitea上传项目代码
    安卓机型固件系统分区的基础组成 手机启动规律初步常识 各分区的基本含义与说明
    【浙大版《Python 程序设计》题目集(解)】第6章-6 求指定层的元素个数(40分)
    OpenCV图像加载、显示与保存
  • 原文地址:https://blog.csdn.net/fangqi20170515/article/details/126911069
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号