美文网首页
vue 生命周期和钩子函数

vue 生命周期和钩子函数

作者: 程序萌 | 来源:发表于2018-10-12 18:00 被阅读0次

官方生命周期图:

image.png

列表图

image.png image.png

总结

  • beforecreated:el 和 data 并未初始化
  • created: 完成了 data 数据的初始化,el没有
  • beforeMount:完成了 el 和 data 初始化
  • mounted :完成挂载

实际开发中如何使用

beforecreate : 可以在这加个loading事件
created :在这结束loading,还做一些初始化,实现函数自执行
mounted : 在这发起后端请求,拿回数据,配合路由钩子做一些事情
beforeDestroy: 你确认删除XX吗? destroyed :当前组件已被删除,清空相关内容

贴下代码:

  • 在chrome中 打开 console即可查看
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>vue-lifecycle</title>
   <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>

  <hr>
  <div id="container">
      <button @click="changeMsg()">点击刷新</button>
      <button @click="destroy()">destroy</button>
      <h4>{{'页面加载状态信息监听 :'+msg}}</h4>
  </div>

  <script type="text/javascript">
    var vm = new Vue({
      // el:'#container',
      data:{
        msg:'初始加载',
        i: 0
      },
      beforeCreate(){
        console.group("%c%s","color:red",'beforeCreate--实例创建前状态')
        console.log("%c%s","color:blue","el  :"+this.$el) //undefined
        console.log("%c%s","color:blue","data  :"+this.$data) //undefined
        console.log("%c%s","color:blue","msg  :"+this.msg) //undefined
      },
      created() {
        console.group("%c%s","color:red",'created--实例创建完成状态')
        console.log("%c%s","color:blue","el  :"+this.$el) //undefined
        console.log("%c%s","color:blue","data  :"+this.$data) //已被初始化 
        console.log("%c%s","color:blue","msg  :"+this.msg) //已被初始化 
      },
      beforeMount() {
        console.group("%c%s","color:red",'beforeMount--挂载之前的状态')
        console.log("%c%s","color:blue","el  :"+this.$el) //已被初始化 
        console.log(this.$el);
        console.log("%c%s","color:blue","data  :"+this.$data)
        console.log("%c%s","color:blue","msg  :"+this.msg)
        console.log("%s%o","document.getElementById('container'): ",document.getElementById('container'))
      },
      mounted() {
        console.group("%c%s","color:red",'mounted--已经挂载的状态')
        console.log("%c%s","color:blue","el  :"+this.$el)
        console.log(this.$el);
        console.log("%c%s","color:blue","data  :"+this.$data)
        console.log("%c%s","color:blue","msg  :"+this.msg)
        console.log("%s%o","document.getElementById('container'): ",document.getElementById('container'))
      },
      beforeUpdate(){
        console.group("%c%s","color:red",'beforeUpdate--数据更新前的状态')
        if(this.$el.innerHTML){
          console.log("%c%s","color:blue","el  :"+this.$el.innerHTML)
        }
        console.log(this.$el);
        console.log("%c%s","color:blue","data  :"+this.$data)
        console.log("%c%s","color:blue","msg  :"+this.msg)
        if(document.getElementById('container')!=null){
          console.log("%c%s","color:green","真实的 DOM 结构:"+document.getElementById('container').innerHTML)
        }
      },
      updated() {
        console.group("%c%s","color:red",'updated--数据更新完成时状态')
        console.log("%c%s","color:blue","el  :"+this.$el.innerHTML)
        console.log(this.$el);
        console.log("%c%s","color:blue","data  :"+this.$data)
        console.log("%c%s","color:blue","msg  :"+this.msg)
        if(document.getElementById('container')!=null){
          console.log("%c%s","color:green","真实的 DOM 结构:"+document.getElementById('container').innerHTML)
        }
      },
      activated() {
        console.group("%c%s","color:red",'activated-- keep-alive 组件激活时调用')
        console.log("%c%s","color:blue","el  :"+this.$el)
        console.log(this.$el);
        console.log("%c%s","color:blue","data  :"+this.$data)
        console.log("%c%s","color:blue","msg  :"+this.msg)
      },
      deactivated(){
        console.group("%c%s","color:red",'deactivated-- keep-alive 停用时调用')
        console.log("%c%s","color:blue","el  :"+this.$el)
        console.log(this.$el);
        console.log("%c%s","color:blue","data  :"+this.$data)
        console.log("%c%s","color:blue","msg  :"+this.msg)
      },
      beforeDestroy() {
        console.group("%c%s","color:red",'beforeDestroy-- vue实例销毁前的状态')
        console.log("%c%s","color:blue","el  :"+this.$el)
        console.log(this.$el);
        console.log("%c%s","color:blue","data  :"+this.$data)
        console.log("%c%s","color:blue","msg  :"+this.msg)
      },
      destroyed() {
        console.group("%c%s","color:red",'destroyed-- vue实例销毁完成时调用')
        console.log("%c%s","color:blue","el  :"+this.$el)
        console.log(this.$el);
        console.log("%c%s","color:blue","data  :"+this.$data)
        console.log("%c%s","color:blue","msg  :"+this.msg)
      },
      methods: {
        changeMsg() {
          this.msg = '刷新了' + this.i++ + '次';
        },
        destroy() {
          this.$destroy()
        }
      },
    })
    vm.$mount('#container')
  </script>
</body>
</html>

相关文章

  • Vue的生命周期与钩子函数

    完整的Vue生命周期和钩子函数

  • vue 获取节点 获取事件

    vue 生命周期 什么是钩子函数 一开始就执行的 就是钩子函数 vue 钩子函数 也称作为生命周期 befor...

  • 详细的分析 Vue生命周期

    Vue 的生命周期 生命周期执行的函数叫法有三种: 生命周期钩子 生命周期函数 钩子函数 生命周期钩子概念: 在v...

  • 深入浅出Vue生命周期钩子函数

    首先,先展示官方的Vue生命周期钩子函数的图示 在Vue2.0+版本,一个Vue实例共有以下八个生命周期钩子函数 ...

  • 学习链接

    vue-router教程总结 vue生命周期和钩子函数 详解vue生命周期 Vue2.0八——知识点整理 vuex...

  • 什么是生命周期钩子函数?

    new Vue()调用$Mount 生命周期钩子函数应用:

  • Vue-计算属性和监听属性

    thiking 熟记Vue生命周期内的各个钩子函数以及其相应的对比和用法 计算属性(钩子函数--computed)...

  • Vue生命周期

    Vue生命周期详解 一、Vue生命周期 与 作用 (生命周期钩子就是生命周期函数) (1)Vue生命周期:每个Vu...

  • vue生命周期分析

    无论是面试也好还是做项目中也好,Vue生命周期钩子函数都是特别重要的;下面是给大家总结的vue生命周期每个钩子函数...

  • 😄--前端面试整理--VueJs

    1、Vue的指令都有哪些? 2、Vue的生命周期函数 3、除了生命周期函数还有哪些钩子函数 4、Vue组件是怎么进...

网友评论

      本文标题:vue 生命周期和钩子函数

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