React 组件生命周期-概述、生命周期钩子函数 - 挂载时、生命周期钩子函数 - 更新时、生命周期钩子函数 - 卸载时

React 组件生命周期-概述

学习目标: 能够说出组件的生命周期一共几个阶段

组件的生命周期是指组件从被创建到挂在到页面中运行,在到组件不用时卸载组件
注意:只有类组件才有生命周期,函数组件没有生命周期(类组件需要实例化,函数组件不需要)

在这里插入图片描述

生命周期钩子函数 - 挂载时

钩子函数触发时间作用
constructor组件创建时最先执行(组件初始化时只执行一次)1. 初始化 state 2.创建 Ref 3.使用 bind 解决 this 指向问题
render组件每次渲染都会触发渲染 UI(不能在 render 里面调用 setState)
componentDidMount组件挂载后(DOM 渲染完成)执行,初始化时执行一次1.发送网络请求 2.DOM 操作

执行顺序:
constructor -> render -> componentDidMount
实例:

import React from 'react'class App extends React.Component {state = {count: 0,}constructor() {super()console.log('constructor')}componentDidMount() {console.log('componentDidMount')}add = () => {this.setState({count: this.state.count + 1,})}render() {console.log('render')return (<div>this is render<button onClick={this.add}>{this.state.count}</button></div>)}
}
export default App

生命周期钩子函数 - 更新时

学习目标: 能够说出组件更新阶段的钩子函数以及执行时机

钩子函数触发时间作用
render每次组件渲染都会触发渲染 UI(与挂载阶段是同一个 render)
componentDidUpdate组价更新后(DOM 渲染完)DOM 操作,可以获取更新后的 DOM 内容,**不要直接调用 setState
**
实例
import React from 'react'class App extends React.Component {state = {count: 0,}constructor() {super()console.log('constructor')}componentDidMount() {console.log('componentDidMount')}componentDidUpdate() {console.log('componentDidUpdate')}add = () => {this.setState({count: this.state.count + 1,})}render() {console.log('render')return (<div>this is render<button onClick={this.add}>{this.state.count}</button></div>)}
}
export default App

生命周期钩子函数 - 卸载时

学习目标: 能够说出组件卸载(组件销毁)阶段的钩子函数以及执行时机

钩子函数触发时间作用
componentwillUnmount
实例
import React from 'react'
class Test extends React.Component {//如果要用到数据需要去影响识图,就写入state//如果不需要影响识图,就定义为普通实例属性times = nullcomponentDidMount() {this.times = setInterval(() => {console.log('定时器已开启')}, 1000)}componentWillUnmount() {console.log('componentWillUnmount')// 清楚定时器clearInterval(this.times)}render() {return <div>this is Test</div>}
}
class App extends React.Component {state = {flag: true,}constructor() {super()console.log('constructor')}componentDidMount() {console.log('componentDidMount')}componentDidUpdate() {console.log('componentDidUpdate')}add = () => {this.setState({flag: !this.state.flag,})}render() {console.log('render')return (<div>{this.state.flag ? <Test /> : null}<button onClick={this.add}>click</button></div>)}
}
export default App

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

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

相关文章

LeetCode344反转字符串(java实现)

今天我们来分享的题目是leetcode344反转字符串。题目描述如下&#xff1a; 我们观察题目发现&#xff0c;题目要求使用O(1)的空间解决这一问题。那么我们就不能进行使用开辟新的数组进行反转了。 解题思路&#xff1a;那么该题的我得思路是使用双指针的方法进行题解&#xff0…

TypeScript Symbol

1.什么Symbol? Symbol是ES6中新增的一种数据类型, 被划分到了基本数据类型中 基本数据类型: 字符串、数值、布尔、undefined、null、Symbol 引用数据类型: Object 2.Symbol的作用 用来表示一个独一无二的值 3.如何生成一个独一无二的值? let xxx Symbol(); 4.为什么需要Symb…

2024獬豸杯

2024.1.28上午9-12时&#xff0c;返乡大学生边帮姐带娃边做&#xff0c;有几题没交上 解压密码&#xff1a;都考100分 手机备份包 手机基本信息 1、IOS手机备份包是什么时候开始备份的。&#xff08;标准格式&#xff1a;2024-01-20.12:12:12) 2024-01-15.14.19.44 2、请分…

Docker 安装与基本操作

目录 一、Docker 概述 1、Docker 简述 2、Docker 的优势 3、Docker与虚拟机的区别 4、Docker 的核心概念 1&#xff09;镜像 2&#xff09;容器 3&#xff09;仓库 二、Docker 安装 1、命令&#xff1a; 2、实操&#xff1a; 三、Docker 镜像操作 1、命令&#xff1…

centos7 挂载windows共享文件夹报错提示写保护

centos7挂载windows共享时&#xff0c;提示被共享的位置写保护&#xff0c;只能以只读方式挂载&#xff0c;紧接着就是以只读方式挂载失败 原因是组件少装了 yum install cifs-utils 安装完后&#xff0c;正常挂载使用。 下载离线安装包 下载离线包下载工具 下载离线安装包…

SpringBoot系列之MybatisPlus实现分组查询

SpringBoot系列之MybatisPlus实现分组查询 我之前博主曾记写过一篇介绍SpringBoot2.0项目怎么集成MybatisPlus的教程&#xff0c;不过之前的博客只是介绍了怎么集成&#xff0c;并没有做详细的描述各种业务场景&#xff0c;本篇博客是对之前博客的补充&#xff0c;介绍在mybat…

2024/1/27 备战蓝桥杯 1-1

目录 求和 0求和 - 蓝桥云课 (lanqiao.cn) 成绩分析 0成绩分析 - 蓝桥云课 (lanqiao.cn) 合法日期 0合法日期 - 蓝桥云课 (lanqiao.cn) 时间加法 0时间加法 - 蓝桥云课 (lanqiao.cn) 扫雷 0扫雷 - 蓝桥云课 (lanqiao.cn) 大写 0大写 - 蓝桥云课 (lanqiao.cn) 标题…

JUC并发编程与源码分析学习笔记(三)

目录 五十六、JMM之入门简介 五十七、JMM之学术定义和作用 五十八、JMM之三大特性 五十九、JMM之多线程对变量的读写过程 六十、JMM之happens-before-上集 六十一、JMM之happens-before-下集 五十六、JMM之入门简介 Java内存模型之JMM 1、先从大厂面试题开始 ①、你知道…

【SpringSpringBoot】概述

Spring&SpringBoot专题 【注】&#xff1a; 本专题围绕框架核心概念展开&#xff0c;渐进式深入总结学习、面试、开发经验&#xff0c;集中整理便于回顾 持续补充与施工中~~~~ 1.发展史 2.基本架构 Spring框架的基本架构是一个分层架构&#xff0c;包括多个模块&#x…

2024三掌柜赠书活动第六期:人人都离不开的算法——图解算法应用

目录 前言算法概念图解算法应用算法的价值和挑战关于《人人都离不开的算法——图解算法应用》编辑推荐内容简介作者简介图书目录书中前言/序言书摘插画《人人都离不开的算法——图解算法应用》全书速览结束语 前言 作为开发者想必都知道&#xff0c;算法是现代社会中无处不在…

day33_js

今日内容 0 复习昨日 1 JS概述 2 JS的引入方式 3 JS语法 3.1 变量 3.2 基本数据类型 3.3 引用类型 3.4 数组类型 3.5 日期类型 3.6 运算符(算术运算,逻辑,关系运算,三目运算) 3.7 分支 3.8 循环 3.9 函数(重点) 3 常见弹窗函数 alter,confirm,prompt 0 复习昨日 1 盒子模型 对d…

兄弟MFC-8515DN黑白激光多功能一体机硒鼓及粉盒清零方法

耗材信息&#xff1a; 硒鼓DR-3350&#xff1a;约30000页&#xff1b; 墨粉盒TN-3335&#xff1a;约3000页【A4纸5%覆盖率】&#xff1b; 高容量墨粉盒TN-3385&#xff1a;约8000页【A4纸5%覆盖率】&#xff1b; 超高容量墨粉盒TN-3395&#xff1a;约12000页【A4纸5%覆盖率】&a…

php项目下微信小程序对接实战问题与解决方案

一.实战问题与方案总结 1.SQL查询条件是一组数&#xff0c;传参却是一个字符串导致报错&#xff0c;如下 SQLSTATE[HY093]: Invalid parameter number (SQL: select count(*) as aggregate from car_video where province_id in (1492) and city_id in (1493) and county_id …

7 图

图的分类 有向图 add(a,b)无向图 add(a,b) add(b,a) 名词解释 完全图&#xff1a;含有e (n-1)*n/2 条边的无向图有向完全图&#xff1a;含有e (n-1)*n 条边的有向图若边或弧的个数 e<nlogn&#xff0c;则称作稀疏图&#xff0c;否则称作稠密图简单路径&#xff1a;序列中…

LeetCode Hot100 回顾(一)

哈希 128.最长连续序列 要求复杂度为O(n)的算法, 通过两次遍历实现: 第一次遍历将所有元素插入到哈希表中, 第二次遍历过程中对每个元素n进行处理, 如果哈希表中存在值为n-1的元素, 则说明该元素已经被处理或即将被处理; 若不存在, 就继续查看值为n1, n2, n3…的元素是否存在…

个体诊所电子处方系统设计,社区门诊处方开单管理系统软件教程

个体诊所电子处方系统设计&#xff0c;社区门诊处方开单管理系统软件教程 一、前言 以下软件程序操作教程以 佳易王诊所电子处方管理系统软件V17.3为例说明 如图&#xff0c;在基本信息设置里&#xff0c;可以设置处方配方模板&#xff0c;这样在开电子处方的时候可以一键导入…

动态规划——编辑距离问题

假设有a&#xff0c;b两个字符串&#xff0c;现对a字符串进行修改使得a字符串与b字符串完全一样&#xff1b;要求是使用最小的操作次数&#xff0c;使a&#xff0c;b字符串相等。操作有三种&#xff0c;分别是插入一个字符&#xff0c;删除一个字符&#xff0c;替换一个字符。 …

计算机提示缺失dll文件怎么办?那种dll解决方法更值得推荐

当在运行游戏&#xff0c;软件程序的过程中遇到“找不到dll”的情况时&#xff0c;这实际上意味着系统或应用程序无法定位并加载必要的动态链接库文件&#xff08;DLL&#xff09;&#xff0c;从而无法顺利完成预期的功能调用和执行流程。这种问题的发生可能会引发一系列严重后…

Selenium + Django + Echarts 实现亚马逊商品数据可视化爬虫项目

最近完成了1个爬虫项目&#xff0c;记录一下自己的心得。 项目功能简介 根据用户输入商品名称、类别名称&#xff0c;使用Selenium, BS4等技术每天定时抓取亚马逊商品数据&#xff0c;使用Pandas进行数据清洗后保存在MySql数据库中. 使用Django提供用户端功能&#xff0c;显…

PostgreSQL15安装和实现物理复制(主从配置)全程指南

1 概述 本文介绍如何在centos7或rocky9下安装postgresql15&#xff0c;并配置物理复制的全过程。postgresql安装采用shell脚本安装&#xff0c;一键执行&#xff0c;通俗易懂。 2 环境说明 序号IP操作系统用途备注0110.10.0.41rockylinux9.3主库0210.10.0.42rockylinux9.3从…