首页 > 其他分享 >vue之KeepAlive 组件缓存

vue之KeepAlive 组件缓存

时间:2023-01-10 19:33:24浏览次数:41  
标签:缓存 console name vue 组件 KeepAlive

简单使用

<!-- 非活跃的组件将会被缓存! -->
<KeepAlive>
  <component :is="activeComponent" />
</KeepAlive>

讲解

默认会缓存内部的所有组件实例,但我们可以通过 include 和 exclude prop 来定制该行为。
prop 的值都可以是一个以英文逗号分隔的字符串、一个正则表达式,或是包含这两种类型的一个数组

<!-- 以英文逗号分隔的字符串 -->
<KeepAlive include="a,b">
  <component :is="view" />
</KeepAlive>

<!-- 正则表达式 (需使用 `v-bind`) -->
<KeepAlive :include="/a|b/">
  <component :is="view" />
</KeepAlive>

<!-- 数组 (需使用 `v-bind`) -->
<KeepAlive :include="['a', 'b']">
  <component :is="view" />
</KeepAlive>

它会根据组件的 name 选项进行匹配,所以组件如果想要条件性地被 KeepAlive 缓存,就必须显式声明一个 name 选项。
这个name对应的就是vue文件里面js声明的组件的name名。vue3 setup 会自动生成name即vue文件的名字。

激活,再次返回时怎么触发,执行新的操作

// vue3
<script setup>
import { onActivated, onDeactivated } from 'vue'

onActivated(() => {
  console.log('进入该组件时执行')
  // 调用时机为首次挂载
  // 以及每次从缓存中被重新插入时
})

onDeactivated(() => {
  console.log('离开该组件时执行')
  // 在从 DOM 上移除、进入缓存
  // 以及组件卸载时调用
})
</script>
// 再次返回组件时可以通过以上生命周期来获取感知从而执行新的操作

配合RouterView 使用

<router-view v-slot="{ Component }">
      <keep-alive>
        <component :is="Component" />
      </keep-alive>
    </router-view>

官网原文 https://cn.vuejs.org/guide/built-ins/keep-alive.html

标签:缓存,console,name,vue,组件,KeepAlive
From: https://www.cnblogs.com/lixiaotian/p/17041216.html

相关文章

  • vue子传父
    子传父1.先在父级页面的子组件上加上自定义事件 <SearchSelector @attrinfo="propsinfo" />2.在子组件里面写方法传//点击事件,当点击的时候向父级页面传值  ......
  • vue 父组件给子组件传值监听
    <template><divclass="pie-pic"ref="piePic"></div></template><script>exportdefault{name:"PiePic",props:['piePicOption'],data(){retur......
  • 38、商品服务--属性分组---前端组件抽取&VUE中父子组件的交互
    一、父子组件传递数据:1、子组件给父组件传递数据:事件机制即子组件给父组件发送一个事件,携带上数据this.$emit("事件名",携带的数据...)1.1)使用elementui的树形控件的n......
  • Vue中的内置指令
    1.v-text作用是:向其所在的节点中渲染文本内容//与插值语法的区别:v-text会替换掉节点中的全部数据{{xxx}}不会conststr='我是一个字符串'<divv-text='str'></div......
  • MyBatis:缓存
    目录缓存介绍MyBatis缓存一级缓存测试一级缓存失效的四种情况二级缓存使用步骤缓存原理整合第三方缓存EHCache缓存介绍什么是缓存[Cache]?存在内存中的临时数据。......
  • vue3 使用clodop打印插件实现不预览直接打印
    一、下载安装C-LODOPhttps://www.lodop.net/download.html   解压文件后点击exe程序,启用服务   将上述的LodopFuncs.js文件放到工程某个文件下  ......
  • 学习-Vue2-Vue实例-数据与方法-数据的响应式
    当一个实例被创建时,它将data对象中的所有的property加入到Vue的响应式系统中。当这些property的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。当这些数据改变时,......
  • vue路由懒加载
    当打包构建应用时,JavaScript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就会更加高效。V......
  • vue中实现echarts的横向百分比
    <ele-chart       ref="visitChart3"       style="height:80px"       :option="totalparts"      /> ......
  • vue3项目开源项目运行报错::v-deep usage as a combinator has been deprecated. Use
    今天找了一个vue3.0开源项目,在运行的时候npmi报错使用了npmi--legacy-peer-deps根据以上安装依赖成功在运行的时候有报错::v-deepusageasacombinatorhasbeend......