React和Vue生命周期

news2025/1/18 9:05:32

主要就是命名不同

目录

React

组件挂载

挂载前constructor()

挂载时render()

挂载后componentDidMount():初始化节点

更新

更新时render():prop/state改变

更新后componentDidUpdate()

卸载

卸载前componentWillUnmount():清理

Vue

初始阶段:beforeCreate、created、beforeMount、mounted

更新阶段:beforeUpdate、updated

销毁阶段:beforeUnmout、unmounted


React

组件挂载

挂载前constructor()

如果不初始化 state 或不进行方法绑定,则不需要为 React 组件实现构造函数

挂载时render()

class 组件中唯一必须实现的方法。

挂载后componentDidMount():初始化节点

组件(插入 DOM 树中)立即调用。依赖于 DOM 节点的初始化应该放在这里。

更新

更新时render():prop/state改变

它只有在 prop 或state发生变化时才可能更新和重新渲染

更新后componentDidUpdate()

首次渲染不会执行此方法。

卸载

卸载前componentWillUnmount():清理

在组件卸载及销毁之前直接调用。在此方法中执行必要的清理操作,例如,清除 timer,取消网络请求或清除在 componentDidMount() 中创建的订阅等。

class Welcome extends React.Component {
    state = {
        msg: 'hello world'
    }
    constructor(props){
        super(props);
        console.log('constructor');
    }
    componentDidMount = () => {
        // react中发起ajax请求的初始操作,在这个钩子中完成
        console.log('componentDidMount');
    }
    componentDidUpdate = () => {
        // 等DOM更新后触发的钩子
        console.log('componentDidUpdate');
    }
    componentWillUnmount = () => {
        console.log('componentWillUnmount');
    }
    handleClick = () => {  
        /* this.setState({
          msg: 'hi react'
        }); */
        //this.forceUpdate();
        root.unmount();   // 触发卸载组件
    }
    render(){
        console.log('render');
        return (
            <div>
                <button onClick={this.handleClick}>点击</button>
                { this.state.msg }
            </div>
        );
    }
}

Vue

初始阶段:beforeCreate、created、beforeMount、mounted

一般在,created,mounted中都可以发送数据请求,但是,大部分时候,会在created发送请求。因为这样可以更短的时间去响应数据。

更新阶段:beforeUpdate、updated

销毁阶段:beforeUnmout、unmounted

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

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

相关文章

计算机网络 day10 DNAT问题 - 堡垒机 - WLAN

目录 DNAT策略拓扑图&#xff1a; 问题一&#xff1a;当我们访问内网的Web服务的时候&#xff0c;我们防火墙服务器的80端口和Web服务器的8000端口是否需要一直调用程序监控呢&#xff1f; DNAT的作用就是可以帮助我们进行路由转发功能 问题二&#xff1a;当我们在继续DNAT…

wpf RadioButton自定义样式 圆角/直角变化 背景色渐变

样式部分 <LinearGradientBrush x:Key"GradientBrush_1" EndPoint"0.5,1" StartPoint"0.5,0"><GradientStop Offset"1" Color"#CEE5D1" /><GradientStop Offset"0" Color"#FAFAFA" /&…

全志F1C200S嵌入式驱动开发(u盘写读)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 f1c200s本身也支持usb接口。并且它的接口和v3s一样,有两个用途。第一个用途是在f1c200s进入fel状态之后,可以用sunxi-fel等工具完成norflash、nandflash的烧写;第二个用途,就是…

MySQL八股学习记录5MySQL锁from小林coding

MySQL八股学习记录5MySQL锁from小林coding 锁的总览全局锁表级锁表锁元数据锁意向锁AUTO-INC锁 行级锁Record LockGap LockNext-Key-Lock插入意向锁行级锁是如何作用的唯一索引等值查询 唯一索引范围查询非唯一索引等值查询 锁的总览 MySQL锁分为三种,分别是全局锁,表级锁,行级…

模拟行走机器人-python

leetcode第874题 链接https://leetcode.cn/problems/walking-robot-simulation 机器人在一个无限大小的 XY 网格平面上行走&#xff0c;从点 (0, 0) 处开始出发&#xff0c;面向北方。该机器人可以接收以下三种类型的命令 commands &#xff1a; -2 &#xff1a;向左转 90 度…

文本挖掘 day4 基于PMC知识框架文本挖掘的新能源汽车政策动态评价

基于PMC知识框架文本挖掘的新能源汽车政策动态评价 2. 研究设计2.1 研究技术路线2.2 数据采集2.3 动态分相 3. 基于PMC知识框架的策略动态挖掘3.1 PMC知识框架的建立3.2 基于PMC知识框架的策略挖掘字典3.2.1 字典建立步骤3.2.2 建立经验证据的词典 3.3 策略动态挖掘分析3.3.1 发…

python实现接口压力测试

python实现接口压力测试 直接上代码&#xff1a; # -*- coding: utf-8 -*-import json import requests import logginglogging.basicConfig(levellogging.INFO, format%(asctime)s - %(name)s - %(levelname)s - %(message)s) logger logging.getLogger(__name__)restime …

linux sed命令巨好用

sed命令介绍 find ./ -type d | grep rtos-kitfind ./ -type d 是一个在Linux终端中使用find命令的示例。让我们逐步解释这个命令&#xff1a; find: 这是用于在文件系统中查找文件和目录的Linux命令。 ./: 这是指当前目录&#xff08;工作目录&#xff09;&#xff0c;fin…

Java - List

List 接口基本介绍 1、List集合类中的元素是有序的&#xff0c;即添加顺序和取出顺序一致&#xff0c;先进先出。List中的元素可重复 2、List集合中的每个元素都有其对应的顺序索引&#xff0c;即支持索引 3、List容器中的元素都对应一个整数型的序号&#xff0c;记载其在容…

全国首个!武大又一新地标,有大势智慧的身影...

本文转载自武汉大学 数字缔造平行时空 古今交汇&#xff0c;千里相约 在武汉大学月湖旁的文科大楼里 藏着一个神秘的剧场 历史厚重的“文化遗产” 性能卓越的“智能计算” 据说这里有很多“新奇”剧目 见你所未见 闻你所未闻 快和珞珞珈珈一起去看看&#xff01; 珞珈…

重新设置mysql的root用户密码

创建一个txt文档&#xff0c;定义修改密码的SQL语句 ALTER USER rootlocalhost IDENTIFIED BY 1234567; 这里的localhost 表示只允许本地登录&#xff0c;如果改成%表示允许本地登录&#xff0c;也允许远程登录。 1234567就是新密码 管理员身份打开Windows PowerShell&#x…

【重温篇】八大排序——堆排序

完全二叉树 首先复习一下完全二叉树&#xff1a;数据从上到下&#xff0c;从左到右依次进行排列 堆排序 第一步 利用完全二叉树构建大顶堆 大顶堆&#xff1a;父节点的值大于或等于其左右孩子的值&#xff08;构建方法如下&#xff09; 1.定义一个parent游标&#xff0c;…

MyBatisPlus数据自动加解密存取和字段防篡改有效性校验码自动生成存储处理器

整体原理&#xff1a;用Mybatis拦截器拦截ResultSetHandler&#xff0c;做属性解密和完整性校奏。替换默认的ParameterHandler处理器。做属性加密存储和完整性加密存储。 代码结构如下&#xff1a; 各功能类解释&#xff1a; 1、EntityClassResolver&#xff1a;用于解析当前M…

Spring创建Ajax和接受Ajax数据-spring20

建一个AJAX.jsp页面 发送Ajax请求一般用jQuery 引入jQuery 引入文件&#xff1a; 弄一个请求 获得集合参数第二种应用场景 requestBody 的意思请求体 为什么找不到JQuery文件&#xff0c;原因是&#xff1a;前端控制器的配置&#xff1a;缺省&#xff0c;客户端发送请求&…

postgresql 数据库 面试题整理

postgresql 数据库 面试题整理 文章目录 postgresql 数据库 面试题整理前言pg数据库的特点&#xff1a;pg的优点pg的核心优势pg数据库的一些缺点PostgreSQL支持的各种数据类型pg的模式pg的多版本并发控制pg多版本并发控制&#xff08;MVCC&#xff09;介绍pg如何提供安全性Post…

vue3+vite配置 unplugin-vue-component 找不到 Vant 组件的问题

使用 vue3 vite Vant 搭建移动端项目&#xff0c;为了避免全量引入 vant 导致打包体积过大&#xff0c;又不想一个一个组件手动导入&#xff0c;所以就选择了 vant 官方推荐的方法&#xff0c;使用 unplugin-vue-components 插件自动引入组件&#xff0c;并按需引入组件的样式…

需求条目化与自动估算强强联合 助力软件估算自动化

痛点&#xff1a; 需求是产品的源头&#xff0c;是项目规模估算的基石。而传统的软件规模估算是由项目成员手工进行&#xff0c;对人员能力、经验、方法都有一定的要求&#xff0c;但是效果不好而且耗时费力&#xff0c;不能保持规模估算的一致性。 而导致这些问题的原因&#…

A plugin must either be a function or an object with an “install“ function

前言&#xff1a; 最近一个项目使用了vue3tsvite模型框架&#xff0c;在框架的基础之上进行的开发&#xff0c;开发过程中遇到一个问题&#xff0c;控制台有提示信息&#xff0c;如下图&#xff1a; 小小一行黄字&#xff0c;恶心人呀。。。 这话的意思大概是&#xff1a;插件…

中国人民大学与加拿大女王大学金融硕士--中外合作办学硕士领域的宝藏项目

大多数读研人都知道&#xff0c;从办学方式来看&#xff0c;中外合作办学硕士可以分为两种&#xff1a; 一是双学位教育项目&#xff0c;颁发的是外方高校硕士学位证书&#xff0c;同时还可以申请国内高校的硕士学位证书&#xff0c;同时教育部中留服还可以做学历学位认证。 二…

有哪些屏幕录制软件?这几种录屏工具了解一下

有哪些好用的屏幕录制软件呢&#xff1f;如果我们需要教别人如何使用某个软件或者如何完成某个任务&#xff0c;录屏也是非常有用的。可以通过录屏记录下整个过程&#xff0c;然后用于制作教程视频。也有小伙伴在打游戏时&#xff0c;遇到精彩操作有录屏的习惯&#xff0c;那么…