【Vue】生命周期

news2025/1/22 8:04:06

文章目录

  • 生命周期概念
  • 一、生命周期图示
  • 二、生命周期
    • 1.beforeCreate(){}
    • 2.created(){}
    • 3.beforeMount(){}
    • 4.mounted(){}
    • 5.beforeUpdate(){}
    • 6.updated(){}
    • 7.beforeDestroy(){}
    • 8.destroyed(){}
  • 三、vm.$mount(el)
    • 1.未加vm.$mount(el)
    • 2.加上vm.$mount(el)


生命周期概念

从Vue实例创建、运行、到销毁期间,伴随着各种各样的事件,这些事件,统称为生命周期。


一、生命周期图示


二、生命周期

1.beforeCreate(){}

初始化之前,data中的数据和methods中的方法不能拿到,还没有初始化
应用:页面重定向

<body>
    <div id='app'>
        {{msg}}
        <input type="text" v-model="value">
    </div>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            },
            beforeCreate() {
                console.log(this);  // Vue$3 {_uid: 0, _isVue: true, $options: {…}, _renderProxy: Proxy(Vue$3), _self: Vue$3, …}
                console.log(this.msg); // undefined
                console.log('11111'); // 11111
            }
        })
    </script>
</body>

2.created(){}

初始化完成,data和methods已经初始化完成,第一个可以调用data和methods的生命周期
应用:数据请求,数据初始化

<body>
    <div id='app'>
        {{msg}}
        <input type="text" v-model="value">
    </div>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            },
            created() {
                this.msg = 20
                console.log(this);  // Vue$3 {_uid: 0, _isVue: true, $options: {…}, _renderProxy: Proxy(Vue$3), _self: Vue$3, …}
                console.log(this.msg); // 20
                console.log('22222'); // 22222
            }
        })
    </script>
</body>

3.beforeMount(){}

虚拟的DOM挂载,页面中数据还没有挂载,内存已编译完成,页面中还未渲染新的数据

<body>
    <div id='app'>
        {{msg}}
        <input type="text" v-model="value">
    </div>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            },
            beforeMount() {
                console.log('333333'); // 333333
            }
        })
    </script>
</body>

4.mounted(){}

真实的DOM,内存中编译好的模板渲染到浏览器页面中,第一个可以操作DOM元素的生命周期,如果要通过某些插件操作页面上的DOM节点,最早要在mounted中进行

<body>
    <div id='app'>
        {{msg}}
        <input type="text" v-model="value">
    </div>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            },
            mounted() {
                console.log('44444'); // 44444
            }
        })
    </script>
</body>

5.beforeUpdate(){}

更新之前,data中数据是最新的,页面中数据还是旧的,未同步,可以执行0次或多次

<body>
    <div id='app'>
        {{msg}}
        <input type="text" v-model="value">
    </div>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            },
            beforeUpdate() {
                console.log('55555'); // 55555
            }
        })
    </script>
</body>

6.updated(){}

更新之后,页面中和data中数据保持同步,都是最新的,可以执行0次或多次

<body>
    <div id='app'>
        {{msg}}
        <input type="text" v-model="value">
    </div>

    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            },
            updated() {
                console.log('66666'); // 66666
            }
        })
    </script>
</body>

7.beforeDestroy(){}

销毁之前
应用:清空定时器,页面监听

<body>
    <div id='app'>
        {{msg}}
        <input type="text" v-model="value">
    </div>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            },
            beforeDestroy() {
                console.log('beforeDestroy');
            }
        })
    </script>
</body>

8.destroyed(){}

销毁之后

<body>
    <div id='app'>
        {{msg}}
        <input type="text" v-model="value">
    </div>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            }
            destroy() {
                console.log('destroy');
            }
        })
    </script>
</body>

三、vm.$mount(el)

没有定义控制区域el时,需要在实例化Vue后加vm.$mount(‘需要操作的DOM控制区域’)

1.未加vm.$mount(el)

<body>
    <div id='app'>
        {{msg}}
        <!-- {{msg}} -->
    </div>
    <script>
        const vm = new Vue({
            // el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            }
        })
    </script>
</body>

2.加上vm.$mount(el)

<body>
    <div id='app'>
        {{msg}}
        <!-- 10 -->
    </div>
    <script>
        const vm = new Vue({
            // el: '#app',
            data: {
                msg: 10,
                value: ''
            },
            methods: {
            }
        })
        vm.$mount('#app')
    </script>
</body>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言预处理详解

参考文章&#xff1a;c语言预处理 目录 程序的翻译环境和执行条件 翻译环境 编译本身也分为几个阶段 预处理 预处理指令 运行环境 程序执行的过程 预处理 预定义符号 #define #define定义标识符 #define定义宏 宏的申明方式 #define替换规则 #和## #的作用 ##…

OTP语音芯片 NV170D在充电桩的语音方案应用

新能源汽车是我国应对气候变化、推动绿色发展的战略举措&#xff0c;在政策和市场需求的推动下&#xff0c;我国新能源汽车产销量双双增长&#xff0c;新能源汽车保有量地稳步增长将会促进充电桩需求的扩大&#xff0c;企业也将进一步在电动汽车充电桩领域布局。 2022年10月11日…

Linux下的Tomcat的安装详解--值得一看

如有错误&#xff0c;敬请谅解&#xff01; 此文章仅为本人学习笔记&#xff0c;仅供参考&#xff0c;如有冒犯&#xff0c;请联系作者删除&#xff01;&#xff01; 目录 简述静态网页和动态网页的区别。 简述 Webl.0 和 Web2.0 的区别。 tomcat8的安装&#xff0c;配置服…

物流行业如何运用IPD?

物流是供应链活动的一部分&#xff0c;是为了满足客户需要而对商品、服务消费以及相关信息从产地到消费地的高效、低成本流动和储存进行的规划、实施与控制的过程。物流以仓储为中心&#xff0c;促进生产与市场保持同步。物流是为了满足客户的需要&#xff0c;以最低的成本&…

奇葩的 Git 签名错误

最近公司电脑升级后又抽风了。 在访问 Git 的时候提示了证书签名错误。 主要提示的错误为&#xff1a; git.exe fetch -v --progress "origin" fatal: unable to access https://src.ossez.com/yhu-docs.git/: SSL certificate problem: unable to get local issue…

大学4年做出来这个算不算丢人

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

C51 - 红外遥控NEC协议

Infrared 1> 实验概述2> 红外遥控器2.1> 硬件电路 3> NEC红外传输协议3.1> 5部分构成3.2> 引导码3.3> 38KHz载波长啥样?3.4> 咋表示 0 / 1; 4> 红外接收5> 程序设计 1> 实验概述 通过红外遥控器&#xff0c;控制DAYi&#xff08;51开发板&a…

【多线程初阶五】线程池常考面试题

目录 &#x1f31f;一、线程池 &#x1f308;1、线程池是什么&#xff1f; &#x1f308;2、为什么要使用线程池&#xff1f; &#x1f308;3、怎么使用线程池&#xff1f; 1、使用标准库中的线程池&#xff08;6种&#xff09;——>不推荐使用。 2、自定义一个线程池…

【移动端网页布局】flex 弹性布局子项目属性 ① ( flex 属性用法说明 | 代码示例 : 占有剩余布局 / 平均分成若干等份 )

文章目录 一、flex 子项目常用属性1、子项目常用属性介绍2、flex 属性用法说明 二、flex 属性代码示例1、代码示例 - 左右两侧 100 像素 / 中间元素占有所有剩余布局3、代码示例 - 平均分成三等份 一、flex 子项目常用属性 1、子项目常用属性介绍 flex 子项目 的常用属性 : fl…

FL Studio 2023年最新安装使用图文教程,FL Studio 21怎么激活解锁?

Image-Line宣布针对Win和Mac版本的数字音频工作站FL Studio的21版本更新。FL Studio2023是一个完整的软件音乐制作环境或数字音频工作站&#xff08;DAW&#xff09;。代表超过 25年的创新发展&#xff0c;它包含了您在一个包装中编排&#xff0c;编排&#xff0c;录制&#xf…

查询数据(数据库)——简单查询

目录 1&#xff0e;最简单的查询 &#xff08;1&#xff09;查询指定列 &#xff08;2&#xff09;查询所有列 &#xff08;3&#xff09;查询计算列 &#xff08;4&#xff09;为列起别名 &#xff08;5&#xff09;使用DISTINCT关键字消除重复元组 2&#xff0e;查询满…

Kyligence Zen产品体验--小白也能快速上手的指标平台

一、写在最前 啥是Kyligence Zen? Kyligence Zen 是基于 Kyligence 核心 OLAP能力打造的一站式指标平台。凭借集业务模型、指标管理、指标加工、数据服务等于一体的解决方案&#xff0c;Kyligence 协助过多家金融、零售、制造企业客户搭建企业级指标平台。Kyligence Zen 是 K…

常见八种排序实现方法

常见八种排序实现方法 前言快速排序堆排序冒泡排序代码 选择排序代码部分 插入排序思路讲解代码部分 希尔排序代码部分思路讲解 归并排序递归思路讲解代码部分 非递归梭哈代码部分思路讲解 非梭哈代码部分 计数排序代码部分 前言 这里的快速排序和堆排序博主以前都写过&#xf…

绝地求生 压枪python版

仅做学习交流&#xff0c;非盈利&#xff0c;侵联删&#xff08;狗头保命) 一、概述 1.1 效果 总的来说&#xff0c;这种方式是通过图像识别来完成的&#xff0c;不侵入游戏&#xff0c;不读取内存&#xff0c;安全不被检测。 1.2 前置知识 游戏中有各种不同的枪械&#x…

算法修炼之练气篇——练气十四层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 前言&#xff1a;每天练习五道题&#xff0c;炼气篇大概会练习200道题左右&#xff0c;题目有C语言网上的题&#xff0c;也有洛谷上面的题&#xff0c;题目简单适合新手入门。&#xff08;代码都是命运之光自己写的…

基于 LHS 、 BR 与K-means的风电出力场景分析研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

多线程基础总结

1. 为什么要有多线程&#xff1f; 线程&#xff1a;线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中实际运行单位。 进程&#xff1a;进程是程序的基本执行实体。 什么是多线程&#xff1f; 有了多线程&#xff0c;我们就可以让程序同时做…

Java学习路线【看看ChatGPT怎么说】

目录 1、介绍情况2、路线简述3、Java初学者路线4、Java高级开发路线5、安卓开发 1、介绍情况 本文主体内容是chatGPT生成的&#x1f609; 先说结论&#xff1a;chatGPT写出来的路线&#xff0c;深度比较一般&#xff0c;但是对于初学者而言&#xff0c;具有不错的参考价值。…

【机器学习】XGBoost 详细解读 (集成学习_Boosting_GBM)

【机器学习】XGBoost 详细解读 &#xff08;集成学习_Boosting_GBM&#xff09; 文章目录 【机器学习】XGBoost 详细解读 &#xff08;集成学习_Boosting_GBM&#xff09;1. 介绍2. 基本原理3. 目标函数&#xff08;二阶泰勒展开求解&#xff09;3.1 基础的目标函数3.2 二阶泰勒…

error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

Qt系列文章目录 文章目录 Qt系列文章目录前言一、QtCreator中qmake命令是什么&#xff1f;2.解决 前言 我在代码中加入了对应的信号和槽&#xff0c;但编译仍然报错&#xff1a; #ifndef PROJECTWIN_H #define PROJECTWIN_Hnamespace Ui { class ProjectWin; }ProjectWin类声…