详解Vue(3)——生命周期钩子(很重要)

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听编译模板将实例挂载到 DOM 并在数据变化时更新 DOM等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

生命周期图示

beforeCreate()——>在实例创建之前
在beforeCreate之前,拿不到data里面的数据【使用频率较低】

created()——>创建实例时
最早只能在created拿到data数据,能修改data数据
娶不到最终渲染完的dom
不会修改到beforeUpdate和updated【使用频率很高】

beforeMount()——>在挂载之前
挂载:Vue实例和对应的dom标签进行绑定
编译模板已结束,可以访问data的数据
修改数据不会触发updated,beforeUpdate钩子函数

mounted()——>挂载之后的回调函数
真实的dom节点已经渲染到页面,可以操作渲染之后的dom
在vue.js底层实际有一个虚拟DOM,也就是,当mounted发现某一个属性发生变化之后,会将mounted里面的属性对一开始的属性进行覆盖,所以DOM最后渲染的时候,只会渲染mounted

beforeUpdate()——>更新之前会被调用
beforeUpdate和updated在create之前会被调用,不会被更新,但是在mounted和beforeMount执行,则会被更新

updated()——>更新之后会被调用

不能在updated里面改数据,如果在这该的话,就是一个死循环了!我不要测试在updated里面该数据!!

beforeDestroy()——>销毁 之前
只有销毁某一个实例或者组件的时候就会被销毁
实例卸载之前会被调用,可以清理一些资源,防止内存泄露

destroyed()——>销毁之后

<body>
  <div id="app">
    {{username}}
  </div>

  <script>
    var vm = new Vue({
      el: "#app",
      data: {
        username: 'lishangkun'
      },
      beforeCreate() {
        console.log("beforeCreate:", this.username)
      },
      created() {
        //最早可以发送ajax数据请求
        console.log('created:', this.username)
        // this.username = "lishangkun";
      },
      // 
      beforeMount() {
        console.log('before mount')
        console.log(document.getElementById("app"))
        this.username = "糖大果";
      },
      mounted() {
        console.log('mounted:');
        console.log(document.getElementById("app"))
        console.log(this.$el)
        this.username = "唐大广";
        // setTimeout(() => {
        //   this.username = "lishangkun";
        // }, 1000)
        setTimeout(() => {
          vm.$destroy();
        }, 3000)
      },
      beforeUpdate() {
        console.log('beforeUPdate')
      },
      updated() {
        console.log('updated')
      },
      beforeDestroy() {
        console.log('beforeDestroy')
      },
      destroyed() {
        console.log('destroyed')
      }
    })
  </script>
</body>

结果

总结:

生命周期

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值