Vue的学习之路十七:生命周期函数

生命周期图

在这里插入图片描述

代码

<body>
    <div id="app">
      <input type="button" value="修改msg" @click="msg='No'">
      <p id="h3">{{msg}}</p>
    </div>

    <script>
      var vm = new Vue({
        el: '#app', 
        data: { 
          msg: '欢迎学习Vue',
        },
        methods: {
          
        },
        beforeCreate(){
          // 第一个生命周期函数,表示实例完全被创建出来之前,会执行它
          // console.log(this.msg)
          // 在 beforeCreate 生命周期函数执行的时候,data 和 methods 中的数据都还没有被初始化
        },
        created(){
          // 这是遇到的第二个生命周期函数
          console.log(this.msg)
          // 在 created 中,data和methods都已经被初始化好了
          // 如果要调用 methods 中的方法,或者操作 data 中的数据,最早只能在created中操作
        },
        // 这里表示 Vue 开始编辑模板,把 Vue 代码中的那些指令进行执行,最终,在内存中生成一个编译好的最终模板字符串,
        // 然后,把这个模板字符串渲染为内存中的DOM,此时只是在内存中,渲染好了模板并没有把模板挂载到真正的页面中去
        beforeMount(){
          // 第三个生命周期函数,表示模板已经在内存中编辑完成了,但是尚未把模板渲染到页面中
          console.log(document.getElementById('h3').innerText)
          // 在 beforeMount 执行的时候,页面中的元素,还没有被真正替换过来,只是之前写的一些模板字符串
          // 此函数执行的时候,模板已经在内存中编译好了,但是尚未挂载到页面中去,此时,页面还是旧的
        },
        // 将内存中编译好的模板,真实的替换到浏览器页面中去
        mounted(){
          // 第四个生命周期函数,表示内存中的模板,已经真实的挂载到了页面中去,用户已经可以看到渲染好的页面了
          console.log(document.getElementById('h3').innerText)
          // mounted 是 实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例就已经被完全创建好了,
          // 此时如果没有其他操作的话,这个实例就静静的躺在内存中一动不动
        },

        // 接下来的是运行中的两个事件
        beforeUpdate(){ 
          // 这时候表示我们的界面还没有被更新【数据被更新了吗?数据被更新了】
          console.log('界面上元素的内容是:' + document.getElementById('h3').innerText)
          console.log('data中的msg数据是:' + this.msg)
          // 当执行 beforeUpdate 的时候,页面中显示的数据还是旧的,此时 data 数据是最近的,页面尚未和最新的数据保持同步
        },
        updated(){
          console.log('界面上元素的内容是:' + document.getElementById('h3').innerText)
          console.log('data中的msg数据是:' + this.msg)
          // updated 事件执行的时候,页面和data数据已经保持同步了,都是最新的
        }
        // 当执行beforeDestroy钩子函数的时候,Vue实例已经从运行阶段,进入到销毁阶段;此时实力身上所有的 data 和所有的 methods,以及过滤器,指令。。。都处于可用状态,还没有真正执行销毁的过程
        // 当执行 destoryed 函数的时候,组件已经完全销毁了,此时组件中的属性、方法、指令、过滤器。。。都已经不可用了
      })
    </script>
  </body>
  • beforeCreate():第一个生命周期函数,表示实例完全被创建出来之前会执行它,在 beforeCreate 生命周期函数执行的时候,datamethods 中的数据都还没有被初始化
  • created():第二个生命周期函数,在 created 中,datamethods都已经被初始化好了,如果要调用 methods 中的方法,或者操作 data 中的数据,最早只能在created中操作。
  • beforeMount():第三个生命周期函数,表示模板已经在内存中编辑完成了,但是尚未把模板渲染到页面中,此函数执行的时候,模板已经在内存中编译好了,但是尚未挂载到页面中去,此时页面还是旧的
  • mounted():第四个生命周期函数,表示内存中的模板,已经真实的挂载到了页面中去,用户已经可以看到渲染好的页面了,mounted 是 实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例就已经被完全创建好了,此时如果没有其他操作的话,这个实例就静静的躺在内存中一动不动
  • beforeUpdate():当执行 beforeUpdate 的时候,页面中显示的数据还是旧的,此时 data 数据是最新的,页面尚未和最新的数据保持同步
  • updated()updated 事件执行的时候,页面和data数据已经保持同步了,都是最新的
  • beforeDestroy():当执行beforeDestroy钩子函数的时候,Vue实例已经从运行阶段,进入到销毁阶段;此时实力身上所有的 data 和所有的 methods,以及过滤器,指令。。。都处于可用状态,还没有真正执行销毁的过程
  • destoryed():当执行 destoryed 函数的时候,组件已经完全销毁了,此时组件中的属性、方法、指令、过滤器。。。都已经不可用了

猜你喜欢

转载自blog.csdn.net/weixin_39020133/article/details/106374027