vue生命周期以及钩子函数

Vue生命周期

概念

组件或者实例从创建到销毁的一系列过程叫做生命周期;
一个组件或者实例的什么周期都是从new开始的;
实例化之后,内部就会做一些初始化事件与生命周期相关的配置

钩子函数

vue在整个生命周期中提供了一些函数,叫做钩子函数,可以在内部实现一些业务逻辑,并且这些函数会在一些特定的场合下去执行(在生命周期的某一个时刻进行触发)

生命周期的钩子函数大致分为三个阶段

初始化阶段:beforeCreate() created(可以获取数据) beforeMount (render)  mounted
运行中阶段:beforeUpdate updated (mouted ==> change data )
销毁阶段:  beforeDestroy destroyed
下面介绍以下各个钩子函数
先创建一个组件

     
初始化阶段的钩子函数
beforeCreate(){
	console.log(this.msg,document.getElementById("title"))
}
  这个钩子函数初始化阶段就会触发执行
  数据获取不到,并且真实dom也获取不到
created(){
	console.log(this.msg,document.getElementById("title"))
    this.timer = setInterval(() => {
          this.msg += "哈"
     }, 3000);
}
初始化阶段就会触发执行
created钩子函数代表数据已经挂载完毕,但是真实dom节点还是没有渲染出来。
通常在这个钩子函数里面,我们可以进行初始化的一些事件绑定与进行ajax异步请求
 注意:在这个钩子函数里面,如果同步的更改数据的话,是不会影响到运行时钩子函数执行
beforeMount(){
	console.log(this.msg,document.getElementById("title"))
}
初始化阶段就会触发执行
 接下来的过程,就是组件或者实例去查找各自的模板,将其编译成虚拟dom
 beforeMount代表真实dom马上要被渲染出来了,但是页面中还没有生成真实dom
 beforeMount与created钩子函数用法基本一致,也可以进行初始化事件绑定与ajax请求
mounted(){
	console.log(this.msg,document.getElementById("title")
}
初始化阶段就会触发执行
mounted钩子函数是初始化阶段的最后一个钩子函数
数据已经挂载完毕了,并且真实的dom元素也已经生成好了
一般可以进行一些实例化操作 --> 拖拽
运行中阶段的钩子函数
beforeUpdate(){
	console.log("beforeUpdate...",document.getElementById("title").innerHTML,this.msg)
}
初始化的时候不会执行
注意:前提是dom已经挂载完毕之后,再去修改数据的时候,这个钩子函数才会执行
beforeUpdate是dom获取的数据内容是更新之前的内容
updated(){
	console.log("updated...",document.getElementById("title").innerHTML,this.msg)
}
初始化的时候不会执行
updated是dom获取的数据内容是更新之后的内容
数据改变,内部生成新的虚拟dom树,进行diff比较,再去重新渲染真实dom
销毁阶段的钩子函数
beforeDestroy(){
	//定时器及时清掉
    clearInterval(this.timer)
}
当组件销毁的时候,才会触发此方法
这个钩子函数代表销毁之前,可以做一些善后的操作,例如清除定时器相关的事情。
destroyed(){
	console.log("destroyed...")
}
当组件销毁的时候,才会触发此方法
组件的dom结构还是存在的,只不过这个组件已经没有活力了。
失去了双向数据的绑定效果,也不能监听数据的改变。

你可能感兴趣的:(vue.js)