当前位置:首页 > VUE

vue实现组件缓存

2026-02-17 22:25:36VUE

Vue 实现组件缓存的常用方法

使用 <keep-alive> 标签

Vue 提供了内置组件 <keep-alive>,用于缓存不活动的组件实例,避免重复渲染。基本用法如下:

<template>
  <keep-alive>
    <component :is="currentComponent"></component>
  </keep-alive>
</template>

<keep-alive> 默认会缓存所有子组件,但可以通过 includeexclude 属性指定需要缓存的组件:

<keep-alive :include="['ComponentA', 'ComponentB']">
  <component :is="currentComponent"></component>
</keep-alive>

动态组件结合 <keep-alive>

动态组件切换时,结合 v-ifv-show 控制缓存逻辑:

<keep-alive>
  <component-a v-if="showComponentA"></component-a>
  <component-b v-else></component-b>
</keep-alive>

路由级缓存

在 Vue Router 中,可以通过 <keep-alive> 缓存路由组件:

<template>
  <keep-alive>
    <router-view></router-view>
  </keep-alive>
</template>

若需选择性缓存部分路由,可使用路由元信息:

{
  path: '/detail',
  component: Detail,
  meta: { keepAlive: true }
}

模板中动态判断:

<keep-alive>
  <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

生命周期钩子控制

被缓存的组件会触发特定的生命周期钩子:

  • activated:组件被激活时调用
  • deactivated:组件被停用时调用
    export default {
    activated() {
      console.log('组件重新激活');
    },
    deactivated() {
      console.log('组件被缓存');
    }
    }

自定义缓存策略

通过 max 属性限制缓存实例数量,超出时销毁最久未使用的实例:

<keep-alive :max="5">
  <router-view></router-view>
</keep-alive>

手动控制缓存

通过 v-if 动态销毁和重建组件,实现精确控制:

vue实现组件缓存

<keep-alive>
  <child-component v-if="shouldCache"></child-component>
</keep-alive>

注意事项

  • 被缓存的组件会保留状态(如数据、DOM 结构),但不会触发 createdmounted 钩子
  • 频繁切换的组件适合缓存,但需注意内存占用问题
  • 表单类组件缓存时可能导致数据未重置,需在 activated 中处理

标签: 缓存组件
分享给朋友:

相关文章

vue实现tooltips组件

vue实现tooltips组件

实现基础 Tooltip 组件 创建一个名为 Tooltip.vue 的单文件组件,包含模板、样式和逻辑: <template> <div class="tooltip-con…

vue table组件实现

vue table组件实现

Vue 表格组件实现方案 基础表格实现 使用<table>标签结合v-for指令渲染数据是最简单的实现方式: <template> <table> &…

vue组件实现vmodel

vue组件实现vmodel

Vue 组件实现 v-model 在 Vue 中,v-model 是双向数据绑定的语法糖,默认情况下绑定 value 属性并监听 input 事件。在自定义组件中实现 v-model 需要正确配置 p…

vue实现盖章组件

vue实现盖章组件

实现Vue盖章组件的步骤 组件结构设计 创建一个Vue组件,包含画布元素和必要的控制按钮。画布用于显示盖章效果,按钮用于触发盖章操作。组件需要接收图片和盖章位置等参数。 <template&g…

vue实现缓存视频

vue实现缓存视频

Vue 实现视频缓存的方法 在 Vue 中实现视频缓存可以通过多种方式完成,包括使用浏览器的缓存机制、Service Worker 或者借助第三方库。以下是几种常见的方法: 使用 Service W…

vue实现父子组件

vue实现父子组件

Vue 父子组件通信实现方式 1. 父组件向子组件传递数据(Props) 父组件通过 props 向子组件传递数据,子组件通过 props 接收数据。 父组件模板: <template>…