iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >React Class组件生命周期及执行顺序
  • 599
分享到

React Class组件生命周期及执行顺序

2024-04-02 19:04:59 599人浏览 独家记忆
摘要

一、React组件的两种定义方式 1、函数组件,简单的函数组件像下面这样,接收Props,渲染DOM,而不关注其他逻辑 function Welcome(props) { r

一、React组件的两种定义方式

1、函数组件,简单的函数组件像下面这样,接收Props,渲染DOM,而不关注其他逻辑


function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

函数组件无法使用State,也无法使用组件的生命周期方法,没有this,纯展示型组件。

建议:在写组件时,先思考组件应不应该写成展示型组件,能写成展示型组件的尽量写成展示型。

2、class组件,需要继承React.Component,有State,有生命周期,有this

3、共同点

a、无论是使用函数或是类来声明一个组件,它决不能修改它自己的 props

b、所有 React 组件都必须是纯函数,并禁止修改其自身 props

c、React是单项数据流,父组件改变了属性,那么子组件视图会更新

d、属性 props 是外界传递过来的,状态 state 是组件本身的,状态可以在组件中任意修改

e、组件的属性和状态改变都会更新视图

4、组件定义的注意事项

a、组件名称必须是大写字母开头

b、组件的返回值只能有一个根元素

二、class组件不同阶段生命周期函数执行顺序

1、class组件执行顺序如下图

新增:getDerivedStateFromProps,getSnapshotBeforeUpdate

UNSAFE:UNSAFE_componentWillMount,UNSAFE_componentWillUpdate,UNSAFE_componentWillReceiveProps这三个方法17以后的版本会去掉

挂载(Mounting)指组件被实例化并插入到dom中,顺序如下:

constructor -> getDerivedStateFromProps -> render -> componentDidMount

更新(Updating)指当state变化或者props变化会引起更新,顺序如下:

getDerivedStateFromProps -> shouldComponentUpdate -> render -> getSnapshotBeforeUpdate -> componentDidUpdate

卸载指的是组件被从dom移除,只会执行一个生命周期:componentWillUnmount

2、constructor(),在 React 组件挂载时,会首先调用它的构造函数。

作用:通常,在 React 中,在构造函数中只做两件事:

a、通过给 this.state 赋值对象来初始化内部 state。

b、为事件处理函数绑定实例

注意:

a、在为 React.Component 子类实现构造函数时,应在其他语句之前前调用 super(props)。

否则 this.props 在构造函数中可能会出现未定义的

b、不要在里边调用setState

3、componentWillMount(),在 React 组件挂载时render之前。

作用:可以调用setState方法,修改state。同步方法会阻塞,不会引起二次渲染,异步方法不会阻塞,会

引起二次渲染。

注意:该方法已被标记为不安全,尽量不使用。

4、getDerivedStateFromProps((props, state), 静态方法,为了让 props 能更新到组件内部state 中,挂

载和更新时都会调用。

作用:

a、无条件的根据 prop 来更新内部 state,也就是只要有传入 prop 值, 就更新 state

b、只有 prop 值和 state 值不同时才更新 state 值

注意:

a、不能在方法内使用this

b、如果props传入的内容不需要影响到你的state,那么就需要返回一个null,这个返回值是必

须的,所以尽量将其写到函数的末尾

异步处理:

以前,我们可以在props发生改变的时候,在componentWillReceiveProps中进行异步操作,将

props的改变驱动到state的改变。

react setState操作是会通过transaction进行合并的,由此导致的更新过程是batch的,而react

中大部分的更新过程的触发源都是setState,所以render触发的频率并不会非常频繁

现在,为了响应props的变化,我们应该再componentDidUpdate中进行异步操作,响应变化

5、shouldComponentUpdate(nextProps, nextState),更新时也就是state或props发生变化时,会在

render执行之前被调用

作用:

a、性能优化的生命周期方法,修改后的props和state在该方法都可以拿到,与原props和state对

比判断是否需要渲染

注意:

a、此方法的返回值必须是true或者false,返回false将不执行render

6、render(), class 组件中唯一必须实现的方法,纯函数

作用:

a、组件和dom节点都写在这里,返回一个jsx,经过编辑之后是React.createElement的表达式

注意:

a、组件名称首字母要大写

b、只能有一个根节点

c、可以使用<></>作为根节点,这个节点不会渲染,React.Fragment的简写

7、getSnapshotBeforeUpdate(prevProps, prevState),在最近一次渲染输出(提交到 DOM 节点)

之前调用,未伸入测试,了解仅限与此

作用:

a、它使得组件能在发生更改之前从 DOM 中捕获一些信息(例如,滚动位置)。此生命周期的任何

返回值将作为参数传递给 componentDidUpdate()

8、componentDidMount(), 会在组件挂载后(插入 DOM 树中)立即调用

作用:

a、setState

b、操作dom

c、发送请求获取初始数据

9、 componentDidUpdate(prevProps, prevState) ,会在更新(dom已经更新)后会被立即调用

作用:

a、setState

b、操作dom

c、发送请求获取数据

注意:

a、setState必须被包裹在一个条件语句里,否则会导致死循环

10、componentWillUnmount(),会在组件卸载及销毁之前直接调用

作用:在这里可以释放资源, 比如清除定时器, removeEventListener

注意:这里边setState是无效的, 不应该调用

11、getDerivedStateFromError 还未详细了解

12、componentDidCatch 还未详细了解

三、参考

官方生命周期api https://react.docschina.org/docs/react-component.html

到此这篇关于React Class组件生命周期的文章就介绍到这了,更多相关React Class组件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: React Class组件生命周期及执行顺序

本文链接: https://www.lsjlt.com/news/132597.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React Class组件生命周期及执行顺序
    一、react组件的两种定义方式 1、函数组件,简单的函数组件像下面这样,接收Props,渲染DOM,而不关注其他逻辑 function Welcome(props) { r...
    99+
    2022-11-12
  • Vue父子组件生命周期的执行顺序及钩子函数
    这篇文章主要介绍“Vue父子组件生命周期的执行顺序及钩子函数”,在日常操作中,相信很多人在Vue父子组件生命周期的执行顺序及钩子函数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • Angular生命周期执行的顺序是什么
    这篇文章主要介绍“Angular生命周期执行的顺序是什么”,在日常操作中,相信很多人在Angular生命周期执行的顺序是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Angular生命周期执行的顺序是什么...
    99+
    2023-07-05
  • 浅谈Unity脚本生命周期与执行顺序
    目录一、脚本生命周期二、MonoBehavior生命周期图三、脚本执行顺序四、自定义执行顺序一、脚本生命周期 Unity脚本中的常见必然事件如下表所示 ...
    99+
    2022-11-12
  • 关于uni-app页面Page和组件Component生命周期执行的先后顺序
    文档 页面生命周期 https://uniapp.dcloud.net.cn/tutorial/page.html#lifecycle组件生命周期 https://uniapp.dc...
    99+
    2023-05-17
    小程序 uni-app Page uni-app Component uni-app生命周期
  • React组件的生命周期详解
    目录React生命周期1、初始化阶段2、旧生命周期3、新生命周期4、react中性能优化的方案React生命周期 1、初始化阶段 componentDidMount:render之前...
    99+
    2023-03-19
    React 组件 生命周期 React 生命周期
  • vue2与vue3中生命周期执行顺序的区别说明
    目录vue2与vue3中生命周期执行顺序区别生命周期比较简单例子说明三种情况下的生命周期执行顺序1、单页面下生命周期顺序2、父子、兄弟组件的生命周期顺序3、不同页面跳转时各页面生命周...
    99+
    2022-11-13
  • 分析React中组件的生命周期
    这篇文章主要讲解了“分析React中组件的生命周期”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分析React中组件的生命周期”吧!初始化在组件初始化阶段会...
    99+
    2022-10-19
  • React中的生命周期和子组件
    目录组件生命周期创建创建期获取虚拟DOM子组件组件生命周期 为了说明组件的创建,存在,销毁的过程,react提供了组件的生命周期,共分三大周期: 创建期:说明组件的创建的过程,相当于...
    99+
    2022-11-13
  • React组件的生命周期是什么
    这篇文章主要讲解了“React组件的生命周期是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“React组件的生命周期是什么”吧!React生命周期1、初始化阶段componentDidM...
    99+
    2023-07-05
  • vue2与vue3中的生命周期执行顺序有什么区别
    vue2与vue3中生命周期执行顺序区别生命周期比较vue2中执行顺序 beforeCreate=>created=>beforeMount =>mounted=>beforeUpdate =>upd...
    99+
    2023-05-16
    Vue3 vue2
  • React组件的生命周期详细描述
    目录一、什么是生命周期二、装载过程1、constructor2、render3、componentWillMount和componentDidMount三、更新过程1、compone...
    99+
    2022-11-12
  • react生命周期(类组件/函数组件)操作代码
    1.react代码模式分为两种 类组件和函数组件(生命周期也有所不同) 2.类组件(写法如下) import React from 'react' export default cl...
    99+
    2023-01-06
    react生命周期 react类组件 react函数组件
  • 关于react父子组件的执行顺序
    目录react父子组件的执行顺序1.class组件 2.函数组件  hooks无依赖的情况react父子组件的执行顺序 react版本:17.x,在此版本中完全可...
    99+
    2022-11-13
  • React 组件的常用生命周期函数汇总
    目录1. 概述2. 生命周期的三个阶段2.1. 创建时(挂载阶段)2.2. 更新时(更新阶段)2.3. 卸载时(卸载阶段)1. 概述 意义:组件的生命周期有助于理解组件的运行方式、完成更复杂的组件功能、分析组件错误原因等...
    99+
    2022-08-15
    React 组件常用生命周期函数 React 组件
  • Servlet方法生命周期及执行原理详解
    目录快速入门创建JavaEE项目实现接口中的抽象方法执行执行原理Servlet中的生命周期方法1.被创建:执行init方法,只执行一次2.提供服务:执行service方法,执行多次3...
    99+
    2022-11-12
  • react生命周期的类组件和函数组件怎么写
    这篇文章主要介绍“react生命周期的类组件和函数组件怎么写”,在日常操作中,相信很多人在react生命周期的类组件和函数组件怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react生命周期的类组件和函...
    99+
    2023-07-04
  • Springboot事件和bean生命周期执行机制是什么
    今天小编给大家分享一下Springboot事件和bean生命周期执行机制是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-05
  • 微信小程序组件的生命周期有哪些
    微信小程序组件的生命周期有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。组件 attached 生命周期执行次数按照通常的理解,除moved/show/hi...
    99+
    2023-06-06
  • React生命周期与父子组件间通信知识点有哪些
    今天小编给大家分享一下React生命周期与父子组件间通信知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。声明周期很...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作