组件的生命周期

2023-11-08

一、组件的生命周期

1、组件的生命周期:至一个组件从 创建——>运行——>销毁的过程

2、声明周期函数:由Vue提供的内置函数,伴随组件生命周期按次序自动运行——>钩子函数

3、生命周期的阶段划分

(1)创建阶段:beforeCreate、created、beforeMount、mounted

(2)运行阶段:beforeUpdate、update

(3)销毁阶段

4、钩子函数:vue的内置函数,当Vue组件运行到某个阶段时这些函数会自动运行,不需要用户显式的调用

5、keep-alive组件:是vue的内置组件,用来保持vue组件运行的某种状态,避免被重新渲染

注:组件(页面的组成部件)

1️⃣第一步:创建组件(定义组件),组件文件的扩展名(后缀)可以是.vue,也可以是.js

2️⃣第二步:在使用组件的位置导入,注册组件

3️⃣第三步:使用组件:像html标签一样使用

6、生命周期函数:

(1)beforeCreate:在组件创建之前运行,此时Vue实例的del、data、data中的变量均为undefined

(2)created:表示组件已经创建完成,data、props已经初始化,el还是undefined(组件还是没有挂载到DOM上)

(3)beforeMount:el被绑定(和DOM绑定),但未挂载

(4)mounted:组件挂载之后,el绑定、组件挂载

(5)beforeUpdate:当组件的内容被改变、隐藏的组件被显示、显示的组件被隐藏等触发

(6)beforeDestory:在组件销毁之前,组件还是正常使用

(7)destroyed:组件销毁之后

<div id="app">
        <p>{{ message }}</p>
        <keep-alive>
            <my-components msg="hello" v-if="show"></my-components>
        </keep-alive>
</div>
<script>
        //定义子组件
        const child = {
            template:`<div>我是子组件:{{msg}}</div>`, //子组件的html模板内容
            props:['msg'],   //接受父组件传递的msg
            data:function(){
                return {
                    childMsg:'child'
                }
            },
            deactivated: function(){   //钩子函数:在组件非运行时触发
                console.log('component deactivated!');
            },
            activated:function(){   //钩子函数:在组件运行时触发
                console.log('component activated')
            }
        }
        //创建vue实例:和DOM中的id为app的元素绑定
        var app = new Vue({
            el:'#app',
            components:{    //注册子组件
                'my-component':child
            },
            data:function(){
                return {
                    message:'父组件',
                    show:true
                }
            },
            //3、定义生命周期函数
            beforeCreate: function(){
                console.group('beforeCreate 创建前状态------------>');
                let state = {
                    'el':this.$el,
                    'data':this.$data,
                    'message':this.message
                }
                console.log(state);
            },
            created:function(){
                console.group('created 创建完毕状态------------>');
                let state = {
                    'el':this.$el,
                    'data':this.$data,
                    'message':this.message
                }
                console.log(state);
            },
            beforeMount:function(){
                console.group('beforeMount 挂载前状态------------>');
                let state = {
                    'el':this.$el,
                    'data':this.$data,
                    'message':this.message
                }
                console.log(this.$el)
                console.log(state);
            },
            mounted:function(){
                console.group('mounted 挂载结束状态------------>');
                let state = {
                    'el':this.$el,
                    'data':this.$data,
                    'message':this.message
                }
                console.log(state);
            },
            beforeUpdate:function(){
                console.group('beforeUpdate 更新前状态------------>');
                let state = {
                    'el':this.$el,
                    'data':this.$data,
                    'message':this.message
                }
                console.log(state);
                console.log(this.$el);
                console.log('beforeUpdate == '+document.getElementsByTagName('p')[0].innerHTML);
            },
            updated:function(){
                console.group('updated 更新完成状态------------>');
                let state = {
                    'el':this.$el,
                    'data':this.$data,
                    'message':this.message
                }
                console.log(state);
                console.log(this.$el);
                console.log('beforeUpdate == '+document.getElementsByTagName('p')[0].innerHTML);
            },
            beforeDestroy:function(){
                console.group('beforeDestroy 销毁前状态------------>');
                let state = {
                    'el':this.$el,
                    'data':this.$data,
                    'message':this.message
                }
                console.log(state);
                console.log(this.$el);
            },
            destroyed:function(){
                console.group('destroyed 销毁完成状态------------>');
                let state = {
                    'el':this.$el,
                    'data':this.$data,
                    'message':this.message
                }
                console.log(state);
                console.log(this.$el);
            },
            components:{
                'my-components':child
            }
        })
</script>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组件的生命周期 的相关文章

随机推荐

  • wedo2.0编程模块介绍_福特福克斯TCM重新编程操作

    适用范围 支持车型 年款 新福克斯 2011 2018 1 6L 2 0L DPS6变速箱 车型 嘉年华 2013 1 5L DPS6变速箱 车型 翼博 2013 2016 1 5L DPS6变速箱 车型 功能介绍 升级ECU版本或者对空白
  • DGA域名检测的数据分析与深度学习分类

    一 引言 在恶意软件发展的初期 恶意软件编写者会直接将控制服务器的域名或IP直接写在恶意软件中 即使是现在也会有恶意软件遵从这种方式 笔者部署的蜜罐捕获的僵尸网络样本中 很多经过逆向之后发现也是直接将IP写在软件中 对于这种通信的方式 安全
  • PCL 点云边界提取

    边界提取 一 算法原理 1 算法概述 2 详细流程 3 参考文献 二 代码实现 三 结果展示 一 算法原理 1 算法概述 基于法线实现点云边界提取 pcl BoundaryEstimation 2 详细流程 3D点云的边缘点往往位于最外围
  • 指定版本安装selenium(python)

    怎样指定selenium 卸载selenium pip uninstall selenium 指定版本安装selenium pip install selenium 3 3 1
  • PyQt(Python+Qt)学习随笔:windows下使用pyinstaller将PyQt文件打包成exe可执行文件

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 在 windows下使用pyinstaller将多个目录的Python文件打包成exe可执行文件 介绍了可以使
  • chatgpt赋能python:看Python代码的App:提高你的编程技能

    看Python代码的App 提高你的编程技能 Python作为一门流行的编程语言 使用者越来越多 如果你是一名初学者或是有多年的编程经验的工程师 你可能会遇到需要查看Python代码的情况 为了满足这一需求 近年来出现了一些看Python代
  • 如何用cmd查看文件内容的MD5值

    certutil hashfile 文件名称 文件类型 MD5 如 certutil hashfile 123 MP3 MD5
  • 常用函数整理(基础篇)

    目录 strcpy 返回值 strcat Parameters 返回值 例 strncpy Parameters 返回值 例 strncat Parameters 返回值 例 strncmp Parameters 返回值 例 strstr
  • 精灵图与遮罩层的使用方法

    一 精灵图 精灵图的使用步骤 第一步 先测量精灵图局部的大小 设置为盒子的宽度和高度 第二部 测量精灵图局部的坐标值 设置为背景定位的负值 宽 width 20px 高 height 20px 精灵图局部定位值 84px 366px 二 遮
  • monkey命令

    monkey是adb调试工具中的一个命令 用于android设备的稳定性测试 主要是为了测试app会不会出现crash和anr 以及出现的时间和次数 adb shell monkey命令 可以查看命令所能携带的参数 crash 程序崩溃或闪
  • background-position: -192px -48px;//图片定位详解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt
  • SAP S/4实操LTMC 数据迁移驾驶舱

    SAP S 4实操LTMC 数据迁移驾驶舱 文章目录 SAP S 4实操LTMC 数据迁移驾驶舱 前言 一 LTMC是什么 二 使用步骤 1 配置好SICF并正常启用LTMC服务 2 数据迁移 2 1 创建迁移项目 2 2 数据整理 总结
  • 蓝牙简单配对(Simple Pairing)协议及代码流程简述

    DESCRIPTION 在BT2 1及之后版本 蓝牙协议有在传统的密码配对 PIN Code Pairing 之外 新增一种简单配对 Simple Pairing 的方式 这种新的配对方式操作更为简单 安全性也更强 目前市面上大部分蓝牙设备
  • 《算法笔记》01

    1 比较交换3个实数值 并按序输出 从键盘输入3个实数a b c 通过比较交换 将最小值存储在变量a中 最大值存储在变量c中 中间值存储在变量b中 并按照从小到大的顺序输出这三个数a b c 末尾输出换行 include
  • kafka客户端连接测试

    客户端代码 package main import fmt github com Shopify sarama kafka 示例代码 func main 配置 config sarama NewConfig 等待服务器所有副本都保存成功后的
  • 【Qt多线程之线程的等待和唤醒】

    QWatiCondition的成员函数 QWaitCondition QWaitCondition bool wait QMutex mutex unsigned long time ULONG MAX void wakeOne void
  • 哪些你朝思暮想的动漫网站-搜嗖工具箱

    AcFun是国内首家弹幕视频网站 这里有全网独家动漫新番 友好的弹幕氛围 有趣的UP主 好玩有科技感的虚拟偶像 年轻人都在用www acfun cn 哔哩哔哩是国内知名的视频弹幕网站 这里有及时的动漫新番 活跃的ACG氛围 有创意的Up主
  • docker pull 设置代理

    简介 你在终端设置代理的时候docker pull的时候是不会走代理的 下面是docker pull设置代理的正确方式 操作 环境是在centos下 如果没有新建下面这个文件夹 sudo mkdir p etc systemd system
  • 毕业设计-基于大数据的新闻推荐系统-python

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • 组件的生命周期

    一 组件的生命周期 1 组件的生命周期 至一个组件从 创建 gt 运行 gt 销毁的过程 2 声明周期函数 由Vue提供的内置函数 伴随组件生命周期按次序自动运行 gt 钩子函数 3 生命周期的阶段划分 1 创建阶段 beforeCreat