VUE05——组件生命周期

组件从创建到销毁的过程叫做组件的生命周期

vue在整个生命周期中为我们提供了一些钩子函数钩子函数的特点就是毁在生命周期的某一刻去触发

  • 生命周期:
    组件的生命周期分为三个阶段:初始化 运行中 销毁
    各阶段中包括下列钩子函数:
    初始化阶段:beforeCreate created beforeMount (render) mounted
    运行中阶段:beforeUpdate updated
    销 毁 阶 段:beforeDestroy destroyed

Vue官方图析:
vue官方图

  • 组件或实例在生命周期内都干了些什么?
  • 内部有8个钩子函数,钩子函数在特定的时间触发。
    1、一个组件或者实例的声明周期都是从new创建开始的。
new Vue({}).$mount("#app")

2、实例化之后,内部会进行初始化的事件和声明周期相关的配置。

 Vue.component("my-component",{
     template:"#my-component",
      data(){
          return {
              msg:1
          }
      },
      methods:{
	      destroy(){
	          this.$destroy();//销毁组件
	      }
	  },

3、beforeCreate钩子函数:初始化事件和声明周期,这个钩子函数获取不到数据,dom元素也不能渲染出来,所以此函数基本不会做任何事情。

 beforeCreate(){
 	console.log("beforeCreate...")
    console.log(this.msg,document.getElementById("title"))
}
输出:eforeCreate...    undefined null

4、created钩子函数:

  • 这个钩子函数已经获取到数据了,但是dom元素也渲染不出来
  • 这个钩子如果同步更改数据,不会影响运行时的钩子函数
  • 可以用来发送ajax请求和一些初始化事件的操作
created(){
    this.timer = setInterval(() => {
        console.log(11111111)
        this.msg++
    }, 2000);
    console.log("created...")
    console.log(this.msg,document.getElementById("title"))
}
输出:created...     1 null
下面就是组件或实例去查找各自的模板,然后将其编译成虚拟dom放入到render函数中

5、beforeMount钩子函数:

  • 这个钩子函数代表dom节点马上要被渲染出来了,但是还没有渲染出来
  • 此钩子函数和created函数差不多,都是可以进行ajax请求与初始化事件的操作
 beforeMount(){
    console.log("beforeMount...")
    console.log(this.msg,document.getElementById("title"))
}
输出:beforeMount...     1  null

6、mounted钩子函数:

  • mounted 是生命周期初始化阶段的最后一个钩子函数
  • 这个钩子函数,数据早就拿到了,同时dom元素也渲染出来了。
mounted(){
    console.log("mounted...")
    console.log(this.msg,document.getElementById("title"))
}  
输出:mounted...  1  <h1>Hello!</h1>

7、beforeUpdate钩子函数:

  • beforeUpdate钩子函数初始化时不会被执行,从名字就能看出来只有在数据更改的时候才会执行。
  • 但是beforeUpdate在数据发生改变的时候,获取到的只能是数据改变之前的值。
  • 【注意】千万不要在beforeUpdate这个函数内部做更改数据的操作,这个否则会造成死循环
beforeUpdate(){
 	console.log("beforeUpdate...")
    console.log(document.getElementById("title").innerHTML)
}
输出:beforeUpdate...  1

8、updated钩子函数:

  • update获取到的是数据更新之后的内容
  • 内部操作:生成新的虚拟dom,和之前的虚拟dom进行对比,对比出来差异后进行渲染更新
updated(){
    console.log("updated...")
    console.log(document.getElementById("title").innerHTML)
}
输出:updated...  更新后的数据

9、beforeDestroy钩子函数:

  • beforeDestroy可以在销毁前做一些善后工作,例如可以清楚在初始化时添加的事件
beforeDestroy(){
	console.log("beforeDestroy...")
	//清除定时器操作
	clearInterval(this.timer)
}
输出:beforeDestroy...  并清除定时器

10、destroyed钩子函数

  • 销毁组件,意味着组件的双向数据绑定、watcher事件监听等也都被移除掉了
  • 但是组件dom结构还是存在的
destroyed(){
	console.log("destroyed...")
}
输出:destroyed...  并将组件的数据双向绑定、watcher事件监听等移除掉 dom结构依然存在

《个人笔记》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中,父子组件生命周期包括以下几个阶段: - 父组件beforeCreate:组件实例被创建之前的钩子函数。 - 父组件created:组件实例被创建之后的钩子函数,但是还未挂载到DOM上。 - 父组件beforeMount:组件即将被挂载到DOM上的钩子函数。 - 子组件beforeCreate:子组件实例被创建之前的钩子函数。 - 子组件created:子组件实例被创建之后的钩子函数,但是还未挂载到DOM上。 - 子组件beforeMount:子组件即将被挂载到DOM上的钩子函数。 - 子组件mounted:子组件已经被挂载到DOM上的钩子函数。 - 父组件mounted:父组件已经被挂载到DOM上的钩子函数。 - 父组件beforeUpdate:父组件数据更新之前的钩子函数。 - 子组件beforeUpdate:子组件数据更新之前的钩子函数。 - 子组件updated:子组件数据更新之后的钩子函数。 - 父组件updated:父组件数据更新之后的钩子函数。 - 父组件beforeUnmount:组件即将被销毁之前的钩子函数。 - 子组件beforeUnmount:子组件即将被销毁之前的钩子函数。 - 子组件unmounted:子组件已经被销毁的钩子函数。 - 父组件unmounted:父组件已经被销毁的钩子函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue3 --父子组件生命周期](https://blog.csdn.net/m0_47901007/article/details/118763279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Vue——父子组件生命周期(执行顺序)](https://blog.csdn.net/leilei__66/article/details/118699960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [计算机程序设计语言课程设计(VUE.js)及实践项目的例子.txt](https://download.csdn.net/download/weixin_44609920/88236928)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值