Vue图解!!!Vue的生命周期管理【7】

1.图解:

2.生命周期解读

1.创建阶段

 `beforeCreate`:

- 在实例初始化之后,数据观测和事件配置之前被调用。
- 此时不能访问 `data`、`computed` 和 `methods` 中的数据和方法。

`created`:

- 在实例创建完成后被立即调用。
- 此时可以访问 `data`、`computed` 和 `methods`,但 DOM 尚未挂载,无法访问到 DOM 元素。
- 通常可以在此阶段进行一些数据初始化、发送 Ajax 请求获取数据等操作。

2.挂载阶段

`beforeMount`:

- 在挂载开始之前被调用。
- 此时模板已经编译完成,但尚未挂载到 DOM 中。

`mounted`:

- 实例被挂载后调用。
- 此时可以访问到 DOM 元素,可以进行一些 DOM 操作、初始化第三方插件等。

3.更新阶段:

beforeUpdate

- 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。
- 可以在这个钩子中获取更新前的状态。

updated

- 由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后调用。
- 可以在此钩子中执行依赖于 DOM 的操作,但要注意避免无限循环的更新

4.销毁阶段:

`beforeDestroy`:

- 在实例销毁之前调用。
- 可以在此处解绑一些全局事件、清除定时器等操作,以防止内存泄漏。

`destroyed`:

- 实例销毁后调用。
- 此时组件的所有数据观测、事件监听器和子组件都已被销毁。

3.案例演示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<!--2.准备一个容器-->
<div id="root">
  <h2>count:{{count}}</h2>
  <button @click="count++">count++</button>
  <button @click="destroy">销毁</button>
</div>
<!--1.引入Vue js 文件-->
<script src="./js/vue.js"></script>
<script type="text/javascript">
  //3.创建Vue对象
  let vm = new Vue({
    data() {
      return {
        count:99
      }
    },
    methods:{
      destroy(){
        this.$destroy();
      }
    },
    beforeCreate(){
      console.log("beforeCreate 无法通过VM访问到data中的数,methods中的方法 不能使用的")
    },
    //数据代理  数据监测
    created(){
      console.log("created 可以通过VM访问到data中的数,methods中的方法能使用")
    },
    //形成虚拟DOM ......
    beforeMount(){
      console.log("beforeMount 页面显示的时 未经编译的DOM结构")
      //     所有对DOM的操作 都是无效的
    },
    //将虚拟DOM 转换为展示DOM
    mounted(){
      console.log("mounted  页面完全展示 ")
      //所有对真实DOM的操作 都是奏效
      // 发起请求 订阅消息 绑定 事件.....
      //比如 : 定义了 定时器
    },
    beforeUpdate(){
      console.log("beforeUpdate  数据是新的,但是页面是旧的")
    },
    // 生成新的虚拟DOM  与 旧的虚拟DOM 进行比对
    // 最终完成页面的更新
    updated(){
      console.log("updated 数据是新的 页面也是新的");
    },
    beforeDestroy(){
      console.log("beforeDestroy  此时vm中所有的 数据  方法  指令 等等 都是可用状态")
      console.log("马上要执行 销毁过程 开始释放资源 取消订阅 清除定时器.....")
    },
    destroyed(){
      console.log("destroyed 结束")
    }
  }).$mount("#root");
</script>
</body>
</html>
  

当数据更新时执行更新阶段的方法

此时点击销毁vue

销毁后再点击count++会发现页面没有反应,控制台也无内容输出,因为此时的vue已经销毁了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值