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面试必看题    下载地址:百度网盘下载

原文地址:https://www.cnblogs.com/yedda/p/9898596.html

时间: 2024-10-14 16:54:15

Vue中 key keep-alive的实现原理的相关文章

vue中数据双向绑定的实现原理

vue中最常见的属v-model这个数据双向绑定了,很好奇它是如何实现的呢?尝试着用原生的JS去实现一下. 首先大致学习了解下Object.defineProperty()这个东东吧! * Object.defineProperty() * 对对象的属性进行 定义/修改 * */ let obj = {x:10} // 这两种方式都相对来说比较简单,直接,但是有些时候我们需要对对象的属性的修改和增加进行必要的干预 // obj.y = 20; // obj.x = 100; // obj.x =

vue中key的作用 v-for里警告 v-if的复用

vue总是会复用页面上已经存在的dom,区别的方法是加上key就可以,还设有v-for时候的警告也是如此key的作用是区别这条跟那条的.<body> <div id="app"> <div v-if='flag%2'> 用户名:<input type="text"> // 用户名:<input type="text" key='password'> </div> <di

vue 中的 key 有什么作用?

key 是为 Vue 中 vnode 的唯一标记,通过这个 key,我们的 diff 操作可以更准确.更快速. Vue 的 diff 过程可以概括为: oldCh 和 newCh 各有两个头尾的变量 oldStartIndex.oldEndIndex 和 newStartIndex.newEndIndex,它们会在新节点和旧节点会进行两两对比 即一共有4种比较方式:newStartIndex 和oldStartIndex .newEndIndex 和 oldEndIndex .newStartI

图解vue中 v-for 的 :key 的作用,虚拟dom Diff算法

其实不只是vue,react中在执行列表渲染时也会要求给每个组件添加上key这个属性. 要解释key的作用,不得不先介绍一下虚拟DOM的Diff算法了. 我们知道,vue和react都实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面.而隐藏在背后的原理便是其高效的Diff算法. vue和react的虚拟DOM的Diff算法大致相同,其核心是基于两个简单的假设: 1.两个相同的组件产生类似的DOM结构,不同的组件产生不同的DOM结构. 2.同一层级的一组节点,他们

Object.defineProperty() 以及 vue 中双数据绑定的底层原理

Object是在javascript中一个被我们经常使用的类型,而且JS中的所有对象都是继承自Object对象的.虽说我们平时只是简单地使用了Object对象来存储数据,并没有使用到太多其他功能,但是Object对象其实包含了很多很有用的属性和方法,尤其是ES5增加的方法,今天我们先探讨一下Object.defineProperty(). Object.defineProperty 给一个对象添加或者修改属性 返回的是一个对象 语法 Object.defineProperty(obj, prop

vue中实现双向数据绑定原理,使用了Object.defineproperty()方法,方法简单

在vue中双向数据绑定原理,我们一般都是用v-model来实现的 ,但一般在面试话会问到其实现的原理, 方法比较简单,就是利用了es5中的一个方法.Object.defineproperty(),它有三个参数, Object.defineproperty(obj,'val',attrObject), 参数1: obj是属性所在的对象,参数2: 'val',属性名,它是一个string类型,参数3: {}属性所描述的对象 详情可以看Object.defineproperty的文档 下面直接上dem

vue中的v-model原理,与组件自定义v-model

VUE中的v-model可以实现双向绑定,但是原理是什么呢?往下看看吧 根据官方文档的解释,v-model其实是一个语法糖,它会自动的在元素或者组件上面解析为 :value="" 和 @input="", 就像下面这样 1 // 标准写法 2 <input v-model="name"> 3 4 // 等价于 5 <input :value="name" @input="name = $event.

VUE中演示v-for为什么要加key

说到这个问题想必要举个例子了 image 没有key <div id="app"> <div> <input type="text" v-model="name"> <button @click="add">添加</button> </div> <ul> <li v-for="(item, i) in list">

better-scroll在vue中的使用

一.介绍 关于better-scroll的原文详细介绍请参考,这里只做总结 黄老师的文章<当 better-scroll 遇见 Vue>的详细介绍 better-scroll的api:点击 better-scroll的滚动原理 <div class="wrapper"> <ul class="content"> <li>...</li> <li>...</li> ... </u