Vue6-生命周期

生命周期

  1. 概念:生命周期,指的是组件从开始创建,到最终销毁,所经历的整个过程
  2. 也就是从这个对象开始到浏览器页面关闭称为一个生命周期
  3. 这个过程中会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会
  4. 图示

在这里插入图片描述

生命周期钩子

create 阶段

  1. beforeCreate():在实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用(初始化el节点)
  2. created():在实例创建完成后被立即同步调用

mount 阶段

  1. beforeMount():在挂载开始之前被调用(初始化组件)
  2. mounted():实例被挂载后调用,这时 el 被新创建的 vm.$el 替换了。

update 阶段

  1. beforeUpdate():在数据发生改变后,DOM 被更新之前被调用(更改信息)
  2. updated():在数据更改导致的虚拟 DOM 重新渲染和更新完毕之后被调用

destroy 阶段(Vue3中将这个改为了unmount阶段)

  1. beforeDestroy():实例销毁之前调用
  2. destroyed():实例销毁后调用
  3. 通常会销毁:启动的定时器、未完成的网络请求、打开的网络socket连接等

执行顺序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    {
   
   {message}}
    <son></son>
</div>
<script src="../libs/vue.js"></script>
<script>
    const vm=new Vue({
      
      
        el:'#app',
        data:{
      
      
            message:'hello vue2.js'
        },
        components:{
      
      
          son:{
      
      
              template:`
              <div>{
       
       {info}}</div>
              `  ,
              data(){
      
      
                  return {
      
      
                      info:"hello vue3.js"
                  }
              },
              beforeCreate(){
      
      
                  console.log("子元素:beforeCreate")
              },
              created(){
      
      
                  console.log("子元素:created")
              },
              beforeMount(){
      
      
                  console.log("子元素:beforeMount")
              },
              mounted(){
      
      
                  console.log("子元素:mounted")
              },
              beforeUpdate(){
      
      
                  console.log("子元素:beforeUpdate")
              },
              updated(){
      
      
                  console.log("子元素:updated")
              },
              beforeDestroy(){
      
      
                  console.log("子元素:beforeDestroy")
              },
              destroyed(){
      
      
                  console.log("子元素:destroyed")
              }

          }
        },
        beforeCreate(){
      
      
            console.log("父元素:beforeCreate")
        },
        created(){
      
      
            console.log("父元素:created")
        },
        beforeMount(){
      
      
            console.log("父元素:beforeMount")
        },
        mounted(){
      
      
            console.log("父元素:mounted")
        },
        beforeUpdate(){
      
      
            console.log("父元素:beforeUpdate")
        },
        updated(){
      
      
            console.log("父元素:updated")
        },
        beforeDestroy(){
      
      
            console.log("父元素:beforeDestroy")
        },
        destroyed(){
      
      
            console.log("父元素:destroyed")
        }

    })
</script>
</body>
</html>

控制台输出如下测试信息

父元素:beforeCreate
父元素:created
父元素:beforeMount
子元素:beforeCreate
子元素:created
子元素:beforeMount
子元素:mounted
父元素:mounted

vm.message=“hello wordle”
父元素:beforeUpdate
父元素:updated
‘hello wordle’

vm.$children[0].info=“hello world2”
子元素:beforeUpdate
子元素:updated
‘hello world2’

vm.$destroy()
父元素:beforeDestroy
子元素:beforeDestroy
子元素:destroyed
父元素:destroyed
undefined

猜你喜欢

转载自blog.csdn.net/weixin_64925940/article/details/124737901