当前位置: 首页 > article >正文

Vue 的各个生命周期

详解 Vue 的各个生命周期

文章目录

  • 详解 Vue 的各个生命周期
    • Vue 组件的生命周期
      • 1.1 创建阶段
        • 示例:
      • 1.2 挂载阶段
        • 示例:
      • 1.3 更新阶段
        • 示例:
      • 1.4 销毁阶段
        • 示例:
    • 生命周期总结
    • 生命周期钩子对比表
      • 参考链接

Vue 组件的生命周期

在 Vue 中,组件的生命周期可以被划分为创建、运行和销毁三个阶段。以下是每个阶段的重要生命周期钩子。

1.1 创建阶段

在这个阶段,组件开始创建。包括了以下几个生命周期钩子:

  • beforeCreate:在实例初始化之后、数据观测 (data observation) 和事件/侦听器配置之前被调用。
  • created:在实例被创建后调用。此时实例已被完全设置,包括数据观测和属性初始化。
示例:
new Vue({
    data() {
        return {
            message: 'Hello, Vue!'
        }
    },
    beforeCreate() {
        console.log('beforeCreate: 实例刚被创建,数据未初始化');
    },
    created() {
        console.log('created: 实例已创建,数据准备就绪:', this.message);
    }
});

1.2 挂载阶段

在这个阶段,组件被挂载到 DOM 上。包括以下生命周期钩子:

  • beforeMount:在挂载开始之前被调用,相关的 render 函数首次被调用。
  • mounted:在挂载完成后被调用,此时组件的 DOM 结构已被渲染并且可以访问。
示例:
new Vue({
    el: '#app',
    data() {
        return {
            message: 'Hello, Vue!'
        }
    },
    beforeMount() {
        console.log('beforeMount: 组件即将挂载,还未渲染到 DOM');
    },
    mounted() {
        console.log('mounted: 组件已挂载,当前 DOM:', this.$el);
    }
});

1.3 更新阶段

这个阶段是组件数据发生变化后,组件的重新渲染。相关生命周期钩子有:

  • beforeUpdate:在数据发生变化,DOM 更新之前被调用。
  • updated:在 DOM 更新完成后被调用。
示例:
new Vue({
    el: '#app',
    data() {
        return {
            count: 0
        }
    },
    methods: {
        increment() {
            this.count++;
        }
    },
    beforeUpdate() {
        console.log('beforeUpdate: 数据即将更新,当前 count:', this.count);
    },
    updated() {
        console.log('updated: DOM 更新完成,新的 count:', this.count);
    }
});

1.4 销毁阶段

这个阶段是组件被销毁的时刻,相关生命周期钩子有:

  • beforeDestroy:在实例销毁之前调用,此时仍可以访问实例。
  • destroyed:在实例被销毁后调用,所有的事件监听器将被移除。
示例:
new Vue({
    el: '#app',
    data() {
        return {
            isVisible: true
        }
    },
    beforeDestroy() {
        console.log('beforeDestroy: 组件即将被销毁');
    },
    destroyed() {
        console.log('destroyed: 组件已被销毁');
    },
    template: `<div>
                  <button @click="isVisible = false">销毁组件</button>
                  <p v-if="isVisible">Hello, Vue!</p>
               </div>`
});

生命周期总结

Vue 的生命周期钩子允许开发者在组件的不同生命阶段插入自定义逻辑。通过合理使用这些钩子,开发者可以:

  • 在组件被创建时进行初始化和设置。
  • 在挂载后进行 DOM 操作。
  • 在组件更新前后执行特定逻辑。
  • 在组件生命周期末尾清理资源和事件监听。

理解组件的生命周期,对于编写高效、可靠的 Vue 应用至关重要。通过结合生命周期钩子,我们能够确保各个阶段之间的逻辑衔接与数据的一致性。

生命周期钩子对比表

生命周期钩子触发时机说明
beforeCreate实例初始化后数据未初始化,事件和侦听器未配置
created实例创建后数据已就绪,可以访问属性和方法
beforeMount挂载开始之前render 函数首次调用前,DOM 还未生成
mounted挂载完成后DOM 对象已生成,可以进行 DOM 操作
beforeUpdate数据更新前可以读取现有状态,但下一轮 DOM 更新未开始
updatedDOM 更新后可以执行依赖于更新 DOM 结果的操作
beforeDestroy实例销毁前可以清理事件和其他外部资源
destroyed实例销毁后所有事件监听器被移除,完成收尾工作

参考链接

  • Vue.js 官方文档
  • Vue.js 生命周期

http://www.kler.cn/a/404352.html

相关文章:

  • C++进阶:哈希表实现
  • 第75期 | GPTSecurity周报
  • 计算机网络——路由选择算法
  • Redisson 中开启看门狗(watchdog)机制
  • “旧曲新唱”
  • 百度智能云千帆大模型平台引领企业创新增长
  • opencv(c++)---自带的卷积运算filter2D以及应用
  • Github 开源 10K Stars 自动化 API、后台作业、工作流和 UI 的开发平台
  • 学习Gentoo系统中二进制软件包和源代码包的概念
  • 一维卷积神经网络(1D-CNN)
  • C语言之实现简单的表达式计算器
  • Vue前端开发子组件向父组件传参
  • CTFHub-hate_php
  • 学习C#中的BackgroundWorker 组件
  • 贴贴,一款windows剪切板管理软件
  • std::weak_ptr应用于观察者模式的示例
  • 点亮创新之光:常用缺陷检测算法原理、介绍与发文突破方向全解
  • 持续集成与持续部署:CI/CD实现教程
  • C#之WPF的C1FlexGrid空间的行加载事件和列事件变更处理动态加载的枚举值
  • QT实现列表通过向上向下翻页按钮翻页,以及上下键逐行显示文本行,向左向右键翻页功能
  • 图论之最小生成树计数(最小生成树的应用)
  • 使用API有效率地管理Dynadot域名,删除账户中的whois联系人信息
  • 在 Linux 中,重启命令reboot
  • Linux 用户管理
  • Python简介以及解释器安装(保姆级教学)
  • 一文解读数据仓库的分层逻辑和原理