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 = null
  componentDidMount() {
    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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uni-app 开发着突然忘记项目所在位置 教你快速通过HBuilder X定位到项目的位置

我经常会开发着 开发着 就忘记项目在哪了 我们可以用编辑器打开项目 然后右键项目目录 然后选择这个 使用命令行窗口打开所在目录(U) 这样 他就会快速用 本地文件夹 帮你打开这个目录了 还可以 右键项目 选择 使用命令行窗口打开所在目录(U) 下面就会帮你打开这个目录的终端…

腾讯云一键搭建幻兽帕鲁服务器教程

幻兽帕鲁&#xff08;Palworld&#xff09;是一款多人在线游戏&#xff0c;为了获得更好的游戏体验&#xff0c;许多玩家选择自行搭建游戏联机服务器&#xff0c;但是如何搭建游戏联机服务器成为一个难题&#xff0c;腾讯云提供了游戏联机服务器一键部署方案&#xff0c;让大家…

java8 映射方法(map,flatMap)

5.2 映射&#xff08;map&#xff0c;flatMap&#xff09; 一个非常常见的数据处理套路就是 从某些对象中选择信息。比如在SQL里&#xff0c;你可以从表中选择一列。Stream API也通过map和flatMap方法提供了类似的工具。 5.2.1 对流中每一个元素应用函数&#xff08;map&am…

DMA 和 零拷贝技术 到 网络大文件传输优化

文章目录 DMA 控制器的发展无 DMA 控制器 IO 过程DMA 控制器 传统文件传输性能有多糟糕&#xff1f;如何优化文件传输性能零拷贝技术mmap writesendfileSG-DMA&#xff08;The Scatter-Gather Direct Memory Access&#xff09; 零拷贝技术的应用 大文件传输应该用什么方式Pag…

第二百九十二回

文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何混合选择图片和视频文件"相关的内容&#xff0c;本章回中将介绍如何混合选择多个图片和视频文件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1…

OpenGL/C++_学习笔记(四)空间概念与摄像头

汇总页 上一篇: OpenGL/C_学习笔记&#xff08;三&#xff09; 绘制第一个图形 OpenGL/C_学习笔记&#xff08;四&#xff09;空间概念与摄像头 空间概念与摄像头前置科技树: 线性代数空间概念流程简述各空间相关概念详述 空间概念与摄像头 前置科技树: 线性代数 矩阵/向量定…

毕业设计过程学习

传统的目标检测算法主要通过人工设计与纹理、颜色和形状相关的特征来进行目标区域特征的提取。随着深度学习和人工智能技术的飞速发展&#xff0c;目标检测技术也取得了很大的成就。早期基于深度学习的目标检测算法的研究方向仍然是将目标定位任务和图像分类任务分离开来的&…

1 月 27日算法练习-贪心

文章目录 扫地机器人分糖果最小战斗力差距谈判纪念品分组 扫地机器人 思路&#xff1a; 最优机器人清理方法&#xff1a;机器人清理方法先扫左边&#xff0c;有时间再扫右边。最短时间&#xff1a;通过枚举&#xff0c;从 1 开始&#xff0c;清理面积会越大直到全部面积的清理…

深入理解C语言(3):自定义类型详解

文章主题&#xff1a;结构体类型详解&#x1f30f;所属专栏&#xff1a;深入理解C语言&#x1f4d4;作者简介&#xff1a;更新有关深入理解C语言知识的博主一枚&#xff0c;记录分享自己对C语言的深入解读。&#x1f606;个人主页&#xff1a;[₽]的个人主页&#x1f3c4;&…

事务:分布式事务与本地事务的区别

分布式事务章节 分布式事务&#xff1a;2PC与3PC的区别-CSDN博客 分布式事务&#xff1a;X/Open DTP分布式事务处理模型与分布式事务处理XA规范-CSDN博客 事务简介 事务(Transaction)是操作数据库中某个数据项的一个程序执行单元(unit)。事务是由一组操作构成的可靠的独立的…

[SWPUCTF 2018]SimplePHP1

打开环境 有查看文件跟上传文件&#xff0c;查看文件里面显示没有文件url貌似可以文件读取 上传文件里面可以上传文件。 先看一下可不可以文件读取 /etc/passwd不能读取&#xff0c;源码提示flag在f1ag.php 看看能不能读取当前的文件&#xff0c; 先把代码摘下来 file.php …

LPC系列一个定时器不同频率

1.背景 最近研究的LPC804里只有一个ctimer&#xff0c;很多时候用的捉襟见肘的&#xff0c;官方给了一份双匹配的参考例程&#xff0c;不过实际用处不大。不过我花了一晚上的时间&#xff0c;终于研究出来将一个定时器拆成四个定时器用的办法了。这个方法适用于用回调函数的LP…

Fastbee物联网项目新手快速入门

一&#xff0c;前提条件 后端环境准备如下&#xff1a; 正式环境推荐硬件资源最低要求4c8G&#xff0c;硬盘40G。JDK 1.8.0_2xx (需要小版本号大于200) 。Maven3.6.3。&#xff08;IDEA启动时使用IDEA默认自带的版本即可&#xff09;。 启动fastbee之前&#xff0c;请先确定…

go语言(十七)----json

1、结构体转json package mainimport ("encoding/json""fmt" )type Movie struct{Title string json:"title"Year int json:"year"Price int json:"rmb"Actors []string json:"actors" }func main() {movie : Mo…

《A++ 敏捷开发》- 6 估算软件规模

为什么要估规模 规模可以帮我们&#xff1a; 依据历史数据策划&#xff0c;例如估算工作量、工期。归一(Normalize)不同项目作比较。知道现在水平。 依据历史数据策划先把项目分成组件&#xff0c;参考以往类似的组件所花工作量&#xff0c;估算整个项目的总工作量。规模大小…

Spring框架-AOP底层实现原理

文章目录 AOP底层实现原理AOP实现原理分析Java设计模式&#xff08;代理模式&#xff09;静态代理JDK动态代理CGLIB动态代理 AOP操作术语 AOP底层实现原理 AOP实现原理分析 1、AOP采取横向抽取机制&#xff0c;取代传统的纵向抽取机制&#xff08;继承关系&#xff09;。 2、…

腾讯云一键部署搭建幻兽帕鲁联机服务器教程

幻兽帕鲁&#xff08;Palworld&#xff09;是一款多人在线游戏&#xff0c;为了获得更好的游戏体验&#xff0c;许多玩家选择自行搭建游戏联机服务器&#xff0c;但是如何搭建游戏联机服务器成为一个难题&#xff0c;腾讯云提供了游戏联机服务器一键部署方案&#xff0c;让大家…

Java笔记 --- 五、File

五、File 概述 将字符串变成File对象&#xff0c;再去使用里面的方法 父级路径&#xff1a;除了文件本身的路径 C:\Users\Desktop 子级路径&#xff1a;文件名 m.txt 常见的成员方法 判断、返回 length 只能获取文件的大小(字节数量) 创建、删除 delete方法默认只能删除…

搜索<2>——记忆化搜索与剪枝

Part 1:记忆化搜索 记忆化搜索其实就是拿个数组记录下已经得到的值&#xff0c;这样再遇到的时候直接调用即可。 P1464: 虽然此题好像不用记忆化也行&#xff0c;但我们还是老老实实写个记忆化吧。没什么困难的地方&#xff0c;就是它叫你怎么干你就怎么干&#xff0c;记得开…

【Java 数据结构】栈和队列

栈和队列 1. 栈(Stack)1.1 概念1.2 栈的使用1.3 栈的模拟实现1.4 栈的应用场景1.5 概念区分 2. 队列(Queue)2.1 概念2.2 队列的使用2.3 队列模拟实现2.4 循环队列 3. 双端队列 (Deque)4. 面试题 1. 栈(Stack) 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在…