美文网首页
Vue 实例的生命周期

Vue 实例的生命周期

作者: 千见 | 来源:发表于2018-12-28 17:29 被阅读0次

    生命周期图示


    根据官网上的图片添加的理解

    1.png

    更多细节在注释上体现

    自己要注意的:生命周期函数和属性平级,不要写到 methods 当中去

      <script>
        var vm = new Vue({
          el: "#app",
          data: {
            msg: 'ok'
          },
          methods: {
            show() {
              console.log('执行了show方法')
            }
          },
          beforeCreate() {
            // 这是我们遇到的第一个生命周期函数,表示实例完全被创建出来之前,可以执行他
            // console.log(this.msg)
            // this.show();
            // 以上两个都不行
            // 注意,在beforeCreate 生命周期函数执行前,data 和 methods 都还未被初始化
          },
          created() {
            // 这是遇到的第二个生命周期函数
            console.log(this.msg)
            this.show()
            // 在这里 data 和 methods 都已经初始化好了
            // 如果要调用 methods 中的方法,或者是操纵 data 中的数据,在created中使用
          },
          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)
            // 得出结论: 当执行 beforeUodate 的时候,页面中的显示数据还是旧的,
            //此时 data 数据是最新的,页面尚未和最新的数据同步
          },
          updated() {
            console.log('界面上元素' + document.getElementById('h3').innerText)
            console.log('data 中的 msg 数据是:' + this.msg)
            // updeted 执行的时候,页面和 data 已经保持同步了
          },
        })
      </script>
    

    想要试一试的话:每次注释其他的钩子函数,保留所要尝试的,打开浏览器控制台看一看就好了

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

    如果有不足还望指正,谢谢

    相关文章

      网友评论

          本文标题:Vue 实例的生命周期

          本文链接:https://www.haomeiwen.com/subject/vumslqtx.html