• Vue 中 KeepAlive 内置缓存使用


    KeepAlive 介绍及使用场景

    KeepAlive 是 vue 中的内置组件,当多个组件动态切换时可以对实例状态进行缓存,用法如下

    
        
        	
            
     
    
    • 1
    • 2
    • 3
    • 4
    • 5

    router-view 中定义了一个信号槽,来渲染跳转后的组件,将keep-alive 标签封装在 组件的外面,即可实现路由跳转组件的缓存效果

    KeepAlive 使用实例

    下图有两个组件 页面1 和 页面2,组件页面切换 通过 点击按钮 实现

    在这里插入图片描述

    页面1 是一个计数器,加一减一,默认初始值为 0;点击按钮 页面2 ,会跳转一个 含有输入框的页面,输入框默认为空;

    正常情况下,组件切换都会将组件置为初始化状态,不会缓存历史数据;如当页面1 中通过触发 增加减少按钮将当前值置为 5 后,当切换到页面2 再切换至 页面1 ,当前值会被重置为0,原有历史数据并没有被缓存下来

    而 keepAlive 可以在切换时将组件内的原有状态数据进行缓存;使用时只需要将需要缓存的组件外面包裹一层 标签即可,如下:

    
    
    
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    Page1 组件

    
      
    
      
      
    
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    Page2 组件

    
      
    
      
      
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    页面 Page1 和 页面 Page2 组件的外层都加了一层 标签,这样无论从页面1切换到 2 还是2 切换到1 ,两个组件内的数据状态都会得到缓存,不需要重新加载

    在这里插入图片描述

    借助 Include /Exclude 属性 条件缓存

    KeepAlive 默认缓存标签内所有组件,提供 includeexclude 属性可以实现条件缓存,支持逗号分隔、正则表达式,或者类型数组等三种形式

    具体用法如下:

    
    
      
    
    
    
    
      
    
    
    
    
      
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    上面属性内容匹配的都是组件 的 name option ,当组件需要被 keepAlive 条件缓存时,都需要指定 组件的 name

    vue2 中 单文件 组件 指定 name 方式如下

    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    vue3 中 单文件 组件 name 指定,自 3.2.34 以后版本自动将 文件的文件名指定为 name,移除了手动声明方式

    max 指定 最大缓存实例 次数

    中 通过指定 max 属性来限制组件实例的最大缓存次数,当缓存实例次数达到max 值,则将最少访问 实例 销毁 为新示例创建预留空间

    
      
    
    
    • 1
    • 2
    • 3
    实例缓存的钩子函数

    被 KeepAlive 缓存的组件实例,当组件挂载或销毁时会分别触发 activated()deactivated()钩子 函数,而不是 unmounted()mounted()

    如果要在实例挂载或销毁时做一些操作,可以把相关逻辑写入两个钩子函数里:

    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    参考

    https://vuejs.org/guide/built-ins/keep-alive.html#basic-usage

  • 相关阅读:
    Spring-Cloud-Zipkin-05
    【bioinfo】bedtools之intersect命令参数
    使用Python进行健身手表数据分析
    JAVA-----抽象类和接口
    环保行业B2B交易管理系统:赋能企业突围市场竞争,打造数字化B2B交易平台
    C++day1
    酷轻松气囊按摩护膝全新上线,科技呵护膝部健康
    FPGA解析B码----连载3
    ESP8266-Arduino编程实例-GP2Y1010AU0F灰尘传感器驱动
    CCF CSP认证 历年题目自练Day18
  • 原文地址:https://blog.csdn.net/weixin_42512684/article/details/133716981