keep-alive 是vue内置组件 缓存组件内部状态 避免重新渲染

<keep-alive > 是vue内置的一个组件,可用于缓存动态组件 ,使包裹的动态组件在切换时 保存状态,避免重新渲染

可以缓存组件,也可以缓存路由

复制代码
    <template>
       <div>

        <button @click="switchPage">切换页面</button>

        <keep-alive >

          <component :is="curentComponent"></component>

        </keep-alive>

      </div>
    </template>

<script>

import ComponentA from '@/components/ComponentA.vue'

import ComponentB from '@/components/ComponentB.vue'

import ComponentC from '@/components/ComponentC.vue'

export default {

  components: {

    ComponentA,

    ComponentB,

    ComponentC

  },

  data () {

    return {

      user: {},

      curentComponent: 'ComponentA'

    }

  },

 methods: {

    switchPage () {

      this.curentComponent = this.curentComponent === 'ComponentA' ? 'ComponentB' : 'ComponentA'

    },

}

}

</script>

keep-alive 缓存的组件会有两个钩子函数:activated 和 deactivated

第一次进入被缓存的组件A 会触发beforeCreate ==>created ==>beforeMount ==>mounted ==>activated

离开被缓存的A组件 进入被缓存的B组件,会触发A组件的 deactivated ,则第一次进入被缓存的B组件 会触发beforeCreate ==>created ==>beforeMount ==>A组件的deactivated ==>mounted ==>activated

第二次再进这个被缓存的组件A 只触发activated ,不会再触发beforeCreate, created , beforeMount, mounted

keep-alive 可配置 include 属性,需要保证组件的名称(name)与 include 的值相同的才会被缓存

<div>

<button @click="switchPage">切换页面</button>

<keep-alive include="ComponentBpage,ComponentCpage">

<component :is="curentComponent"></component>

</keep-alive>

</div>

exclude 排除 指定哪些组件不被缓存,优先级大于 include,同include ,需要保证组件的名称(name)与 exclude 的值相同

<div>

<button @click="switchPage">切换页面</button>

<!-- <keep-alive include="ComponentBpage,ComponentCpage"> -->

<keep-alive exclude="ComponentBpage">

<component :is="curentComponent"></component>

</keep-alive>

</div>

被缓存后的组件 数据获取方式:

activated 中获取,因为进入缓存组件 不会触发 created 和 mounted钩子函数,会触发activated钩子函数

在 beforeRouteEnter 钩子函数中,在路由进入之前先获取数据。每次组件渲染或者每次进入路由的时候,都会执行 beforeRouteEnter

缓存路由:

include 也可以使用数组,使用 v-bind

相关推荐
我是大头鸟37 分钟前
SpringMVC 通过ajax 实现文件的上传
前端·javascript·ajax
小赖同学啊1 小时前
出现 Uncaught ReferenceError: process is not defined 错误
前端
热爱生活的猴子1 小时前
补充Depends 和 request: Request 依赖注入用法的注意事项
前端·fastapi
开发者小天1 小时前
React中使用 Ant Design Charts 图表
前端·javascript·react.js
爱好物理的一名程序员XiaoK1 小时前
树形展示三级分类数据
vue.js
shenyan~2 小时前
关于 Web 漏洞原理与利用:2. XSS(跨站脚本攻击)
前端·xss
张哈大2 小时前
【 Redis | 实战篇 扩展 】
数据库·redis·笔记·缓存
雪山上的小灰熊2 小时前
如何使用Antv X6使用拖拽布局?
开发语言·前端·javascript
爱吃小白兔的猫2 小时前
从零开始创建React项目及制作页面
前端·react.js·前端框架
jonssonyan3 小时前
使用 vite-plugin-dynamic-base 实现运行时动态设置上下文路径
vue.js·golang·gin