Vue生命周期-挂载流

2022-06-30  本文已影响0人  tutututudou

生命周期

lifecycle.png

挂载流

beforecreate函数

  <div class="root">
    <h1>让n加1:   {{n}}</h1>
    <button @click="add">点击加1</button>
  </div>
  <script>
  Vue.config.devtools = true;
  new Vue({
    el:'.root',
    data:{
      n:1
    },
    methods:{
      add(){
        this.n++
      }
    },
    beforeCreate(){
      console.log('beforeCreate')
      console.log(this) //vm,data和methods等等都是没有看到
      debugger//卡断点
    }
  })
  </script>
beforeCreate.PNG

created函数

  <div class="root">
    <h1>让n加1:   {{n}}</h1>
    <button @click="add">点击加1</button>
  </div>
  <script>
  Vue.config.devtools = true;
  new Vue({
    el:'.root',
    data:{
      n:1
    },
    methods:{
      add(){
        this.n++
      }
    },
    beforeCreate(){
      console.log('beforeCreate')
      console.log(this)
      // debugger
    },
    created(){
      console.log('created')
      console.log(this)//可以访问到vm数据,方法等,this就是vm
      debugger
    }
  })
  </script>
created.PNG

beforeMount函数

  <div class="root">//容器包括这个一行div
    <h1>让n加1:   {{n}}</h1>
    <button @click="add">点击加1</button>
  </div>
  <div class="root" :n="n">
    <h1>让n加1:   {{n}}</h1>
    <button @click="add">点击加1</button>
  </div>
  <script>
  Vue.config.devtools = true;
  new Vue({
    el:'.root',
    data:{
      n:1
    },
    methods:{
      add(){
        this.n++
      }
    },
    beforeCreate(){
      console.log('beforeCreate')
      console.log(this)
      // debugger
    },
    created(){
      console.log('created')
      console.log(this)
      //debugger
    },
    beforeMount(){
      console.log('beforeMount')
      console.log(this)//对DOM操作无效,刷新后就没有了,不生效
      debugger
    }
  })
  </script>
不改变.PNG 原样.PNG

mounted

 <div class="root" :n="n">
    <h1>让n加1:   {{n}}</h1>
    <button @click="add">点击加1</button>
  </div>
  <script>
  Vue.config.devtools = true;
  new Vue({
    el:'.root',
    data:{
      n:1
    },
    methods:{
      add(){
        this.n++
      }
    },
    beforeCreate(){
      console.log('beforeCreate')
      console.log(this)
      // debugger
    },
    created(){
      console.log('created')
      console.log(this)
      //debugger
    },
    beforMount(){
      console.log('beforeMount')
      console.log(this)
      // debugger
    },
    mounted(){
      console.log('mounted')
      console.log(this)//对DOM操作有效,刷新了也生效
      debugger
    }
  })
  </script>


单独调用$mount这个API

<div class="root" :n="n">
    <!-- <h1>让n加1:   {{n}}</h1>
    <button @click="add">点击加1</button> -->
  </div>
  <script>
  Vue.config.devtools = true;
  const vm = new Vue({
    el:'.root',
    template:`<div>
      <h1>让n加1:   {{n}}</h1>
      <button @click="add">点击加1</button>
    </div>`,//这个配置替换el这个容器,上面的<div class="root" :n="n">变为<div>
    data:{
      n:1
    },
    methods:{
      add(){
        this.n++
      }
    },
    beforeCreate(){
      console.log('beforeCreate')
      console.log(this)
      // debugger
    },
    created(){
      console.log('created')
      console.log(this)
      //debugger
    },
    beforMount(){
      console.log('beforeMount')
      console.log(this)
      // debugger
    },
    mounted(){
      console.log('mounted')
      console.log(this)
      // debugger
    }
  })

template替换el.PNG

总结

beforecreate created beforeMount mounted
数据
方法
页面 有(操作不生效) 有(操作生效)
上一篇 下一篇

猜你喜欢

热点阅读