Vue中 key keep-alive的实现原理

vue2.0提供了一个keep-alive组件用来缓存组件,避免多次加载相应的组件,减少性能消耗

keep-aliv是Vue.js的一个内置组件。它能够不活动的组件实例保存在内存中,而不是直接将其销毁,它是一个抽象组件,不会被渲染到真实DOM中,也不会出现在父组件链中。

它有两个生命周期:

  1. activated: keep-alive组件激活时调用
  2. deactivated: keep-alive组件停用时调用

它提供了include与exclude两个属性,允许组件有条件地进行缓存。

keep-alive key

?
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
<!DOCTYPE html>
< html >
< head >
   < title ></ title >
   < script type = "text/javascript" src = "./vue.js" ></ script >
</ head >
< body >
   < div id = "app" >
     < keep-alive >
       < child-component key = "1" v-if = "seen" name = "1" ></ child-component >
       < child-component key = "2" v-if = "!seen" name = "2" ></ child-component >
     </ keep-alive >
     < button @ click = "toggle" >toggle</ button >
   </ div >
   < script type = "text/javascript" >
     Vue.component('child-component', {
       template: `< input type = "text" placeholder = "enter" >`,
       data() {
         return {}
       },
       props: ["name"],
       mounted() {
         console.log(`${this.name} mounted`)
       }
     })
     const vm = new Vue({
       el: "#app",
       data: {
         seen: true
       },
       methods: {
         toggle() {
           this.seen = !this.seen;
         }
       }
     })
   </ script >
</ body >
</ html >

key是标识元素不再被复用,注意key是Vue中的一个保留的属性,不能作为prop传递给子组件,否则会在控制台看到Vue的报错

但是keep-alive标识不重复创建组件实例,也就是只会触发一次created mounted事件,

利用两者可以对组件的复用进行比较精细的管理。

IOS数据存储技术开发视频教程 12课 附源码课件    下载地址:百度网盘下载

IOS界面开发UIKit详细使用视频教程 43课 附源码讲义    下载地址:百度网盘下载
IOS9零基础到精通大神班视频教程 包含源码课件面试题就业指导    下载地址:百度网盘下载
IOS培训班第四期 基础+就业班 完整高清版    下载地址:百度网盘下载
IOS培训班第六期 包含源码课件面试资料    下载地址:百度网盘下载
IOS培训班第五期【完整版】    下载地址:百度网盘下载
IOS多点触控与手势识别开发视频教程 10课 附源码    下载地址:百度网盘下载
中游学院Swift语言视频教程 教学视频 百度网盘下载    下载地址:百度网盘下载
极客ios开发工程师 全套视频教程 教学视频 百度网盘下载    下载地址:百度网盘下载
开源力量iOS开发从OC到Swift入门与修炼 视频教程 教学视频 百度网盘下载    下载地址:百度网盘下载
iOS常用UI控件使用速成秘籍 视频教程 教学视频 百度网盘下载    下载地址:百度网盘下载
IOS视频教程 全套编程自学基础入门app手机应用开发游戏项目实战    下载地址:百度网盘下载
IOS(iPhone)开发中级视频教程    下载地址:百度网盘下载
IOS开发实战视频教程    下载地址:百度网盘下载
小码哥大神班IOS五期不加密版本    下载地址:百度网盘下载
小马哥IOS9 苹果APP开发实战培训基础大神班视频教程    下载地址:百度网盘下载
黑马程序员iOS视频开发教程/李明杰    下载地址:百度网盘下载
IOS开发技术教程 极客学院最新IOS开发技术VIP教程入门到精通教程    下载地址:百度网盘下载
iOS中级视频教程    下载地址:百度网盘下载
iOS面试必看题    下载地址:百度网盘下载

猜你喜欢

转载自www.cnblogs.com/yedda/p/9898596.html