一、整理的Vue生命周期中文图
二、个人理解的Vue生命周期
1.看中文简介版本需要对照下面给的代码,根据注解和代码去对应
2.首先要知道,绑定渲染的dom不止有el中绑定形式,还有实例对象调用$mount
3.绑定后会接着往下找看有没有template 设置,有和没有会执行两种,也就是说
有template 就只会渲染template中的内容,并且覆盖掉el中的内容
4.但是即使向第三条那样使用template,el会被覆盖,也必须写el,但是可以不用
再里面写操作,原因是声明周期先找el,在根据渲染el 和template在选择
5.template 只能有一个根元素,想多个就给有if 或者show 弄成单个显示
6.beforeCreate、created、beforeMount、mounted 他们四个是创建生命周期一
条龙,后续当我们去改变数据,这些声明周期都不会在执行,除非刷新页面重新
让生命周期继续;
7.而改变值让页面跟着一起变化的是beforeUpdate 、updated他俩在虚拟dom
中,改变就触发,但最好不用,因为有watch 和计算属性都可以做到,所以这个
生命周期中一般不做操作
8.这里要最重要的说明beforeUpdate 、updated第一次刷新页面的生命周期不执
行。只有数据更新虚拟dom监听到才执行
三、对照理解代码
1.打上断点更方便理解
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.22/dist/vue.js"></script>
</head>
<body>
<div id="app">
<button @click="dom">增加dom</button>
<p v-for="i,index in list" ref="plist">{{i}}</p>
<p ref="pHtml">我好</p>
<!--<template id="ss">-->
<!--template 渲染区域-->
<!--</template>-->
</div>
<script>
// 创建 Vue 实例,得到 ViewModel
// vm.$mount('#app') 不常用,一般用el
var vm = new Vue({
el: '#app',
// template:'#ss', template 渲染
data: {
list: ['as', 'bs', 'cs'],
},
methods:{
dom(){
this.list.push('ds');
},
},
beforeCreate(){
debugger;
},
created(){
debugger;
},
beforeMount(){
debugger;
},
mounted(){
debugger;
},
beforeUpdate(){
debugger;
},
updated(){
debugger;
},
beforeDestroy(){
debugger;
},
destroyed(){
debugger;
}
});
</script>
</body>
</html>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。