Vue:组件缓存

组件缓存 keep-alive

文章目录

一、keep-alive是什么

  • keep-alive是Vue中的一个内置组件,会缓存不活动的组件实例。并不会销毁组件,导致重新回到这个页面的时候,重新加载。
  • keep-alive不会渲染DOM元素。

二、keep-alive优点


其目的就是为了防止重复渲染DOM,减少加载时间以及性能的消耗。能够提高用户的体验。


三、问题

  • 包裹了 keep-alive 一级路由都会被缓存
js 复制代码
<template>
	<keep-alive>
	//谁往这里出我就缓存谁
		<router-view></router-view>
	</keep-alive>
</template>

四、解决方案

include : 组件名数组,只有匹配的组件会被缓存

exclude :组件名数组,任何匹配的组件都不会被缓存

max : 最多可以缓存多少组件实例

  • 注意 :这里的组件名:指的是name: 组件名 如果没有自己配置组件名,那么才会是文件名。

  • 需求:如果有两个组件,Layout组件 和 Deteil组件 ,我只想缓存Layout组件

五、代码示例

添加 属性 :include="组件名数组"

js 复制代码
<keep-alive :include="keepArr">
	<router-view>路由出口</router-view>
</keep-alive>

我们还可以配置组件名数组(需要缓存多个的时候)

js 复制代码
data () {
	return {
		keepArr: ['Layout']
	}
}

经过缓存后:通过include属性,缓存了Layout组件,而Deteil组件未被缓存。

  • 被缓存的会多两个生命周期钩子:
  1. actived (激活时,组件被看到时触发)
  2. deactived (失活时,离开页面,组件看不见触发)

六、回顾一下钩子

  • 组件缓存了,就不会执行组件的created mounted 和 destroyed钩子
  • 所以组件缓存会给我们提供两个钩子 actived 和 deactived
js 复制代码
created () {
	console.log('created 组件被加载了')
},
monted () {
	console.log('monted DOM渲染完了')
},
destroyed () {
	console.log('destroyed 组件被销毁了')
},
=========================================================
activated () {
	alert('返回首页')
	console.log('activated  组件被激活了,看到页面了')
},
deacivated () {
	console.log('deacivated 组件被失活了,离开页面了')
}

七、总结

  1. keep-alive是什么?
  • Vue内置的组件,包裹动态组件,可以缓存组件
  1. keep-alive有点?
  • 组件切换过程中, 把切换出去的组件保留在内存中(提升性能)
  1. keep-alive的三个属性?
  • include 组件名数组,只要匹配的都缓存
  • exclude 组件名数组, 任何匹配的组件都不会被缓存
  • max 最多可以缓存多少个组件
  1. keep-alive的使用会触发那两个生命周期钩子函数?
  • activated 当组件激活的时候触发该函数 → 进入页面触发
  • deactivated 当组件不被使用的时候触发该函数 → 离开页面触发

相关推荐
我叫Double28 分钟前
GeneralAdmin-3
前端·javascript·vue.js
Charlie_lll30 分钟前
学习Three.js–太阳系星球自转公转
前端·three.js
json{shen:"jing"}31 分钟前
10_自定义事件组件交互
开发语言·前端·javascript
Jinuss32 分钟前
源码分析之React中scheduleUpdateOnFiber调度更新解析
前端·javascript·react.js
一位搞嵌入式的 genius34 分钟前
深入理解 JavaScript 异步编程:从 Event Loop 到 Promise
开发语言·前端·javascript
m0_5649149237 分钟前
Altium Designer,AD如何修改原理图右下角图纸标题栏?如何自定义标题栏?自定义原理图模版的使用方法
java·服务器·前端
方安乐1 小时前
react笔记之useCallback
前端·笔记·react.js
小二·1 小时前
Python Web 开发进阶实战:AI 伦理审计平台 —— 在 Flask + Vue 中构建算法偏见检测与公平性评估系统
前端·人工智能·python
走粥1 小时前
选项式API与组合式API的区别
开发语言·前端·javascript·vue.js·前端框架
We་ct1 小时前
LeetCode 12. 整数转罗马数字:从逐位实现到规则复用优化
前端·算法·leetcode·typescript