首页 > 其他分享 >React 生命周期

React 生命周期

时间:2022-12-01 00:22:25浏览次数:57  
标签:生命周期 render getDerivedStateFromProps React state prevState props prevProps

本文基于react 18

  • 当组件实例被创建并插入 DOM 中时,其生命周期调用顺序如下
    • constructor 构造
    • getDerivedStateFromProps 从props中获取state
    • render 渲染
    • componentDidMount 结束挂载
  • 当组件state中数据发生变化时,其生命周期调用顺序如下
    • getDerivedStateFromProps 从props中获取state
    • shouldComponentUpdat 组件是否渲染,返回true则往下执行,返回false则到此为止
    • render 渲染
    • getSnapshotBeforeUpdate 获取更新前快照
    • componentDidUpdate 组件更新

constructor

constructor(props)
如果不需要初始化state或进行其他初始化操作,constructor可以省略

constructor(props) {
    super(props)
    this.state = {
	//初始化state中的某些值
    }
}

getDerivedStateFromProps

static getDerivedStateFromProps(nextProps, currentState)
从props中获取状态state,返回一个对象或null

/**
 * nextProps 下一状态的props
 * currentState 当前state
 **/
static getDerivedStateFromProps(nextProps, currentState){
        console.log('[从Props中获取state:getDerivedStateFromProps]',nextProps, currentState)
        return {msg:nextProps.info}
    }

render

render(): ReactNode;
渲染界面,页面布局的控件就写在这里面;但是return必须是只能有一个根结点。

render() {
        console.log('[渲染:render]')
        return(
            <div></div>
        )
}

componentDidMount

componentDidMount?(): void;
挂载完成后的操作

componentDidMount() {
    console.log('[挂载后:componentDidMount]')
}

getSnapshotBeforeUpdate

getSnapshotBeforeUpdate?(prevProps: Readonly, prevState: Readonly): SS | null
获取更新前的props和state快照,返回值是state新值或null,返回null,state不做改变,返回对象则state更新

getSnapshotBeforeUpdate(prevProps, prevState) {
     console.log('[更新前获取快照:getSnapshotBeforeUpdate]',prevProps,prevState)
     return {res:'success'}
}

componentDidUpdate

componentDidUpdate?(prevProps: Readonly, prevState: Readonly, snapshot?: SS): void
组件更新后,可获取更新前的state和props

componentDidUpdate(prevProps, prevState, snapshot) {
     console.log('[组件更新:componentDidUpdate]',prevProps,prevState,snapshot)
}

标签:生命周期,render,getDerivedStateFromProps,React,state,prevState,props,prevProps
From: https://www.cnblogs.com/JarryShu/p/16937633.html

相关文章

  • 第五章、react高级
    目录十一、AntDesign组件库1、react中添加class-使用第三方库classnames2、antdesign简介3、认识craco4、自定义主题5、配置别名6、案例十二、axios库的使用1、axios的基本......
  • React学习笔记,文档中的大部分代码都有注释
    React主要用于构建UI。你可以在React里传递多种类型的参数,如声明代码,帮助你渲染出UI、也可以是静态的HTMLDOM元素、也可以传递动态变量、甚至是可交互的应用组件。1.使用(......
  • React Native 单位详细说明
    之前在ReactNative笔记(二)中总结了一点,RN长宽单位默认对应DP:所谓与密度无关就是密度变化不引起物理尺寸的变化,这一点DP与RN官方说的一致.现在想想,也就是说1DP在物理尺寸上......
  • Servlet3.1规范翻译 - 应用生命周期事件
    应用生命周期事件11.1介绍应用事件设施给Web应用开发人员更好地控制ServletContext、HttpSession和ServletRequest的生命周期,可以更好地代码分解,并在管理Web应用使用的资源......
  • 线程的生命周期
    线程的状态线程的状态:也就是线程从生到死的过程,以及中间经历的各种状态及状态转换。理解线程的状态有利于提升并发编程的理解能力。Java线程的状态Java总共定义了6种状态6......
  • react18使用useContext实现多级多级间传值与修改
     a、组件关系:依次嵌套Demo2->Demo2ComA->Demo2CompAA。。。b、实现可实现Demo2ComA与Demo2CompAA两组件间数据获取与修改(多层次嵌套时,也可实现,此处仅展示2......
  • react常用hook中useMemo的使用
     作用:首先useMemo它使用来做缓存用的,只有当一个依赖项改变的时候才会发生变化,否则拿缓存的值,就不用在每次渲染的时候再做计算useMemo主要用来解决使用Reacthooks产生的......
  • react滑块验证码
     1.css.simple-verify{line-height:38px;width:250px;height:40px;border-radius:3px;border:1pxsolid#797979;display:flex......
  • [Zookeeper-3.6.2源码解析系列]-13-Zookeeper使用到的Reactor网络模型原理分析
    目录​​13-启服务端网络监听连接NIOServerCnxnFactory​​​​13.1简介​​​​13.2主从Reactor网络IO模型main-subreactor​​​​13.3NIOServerCnxnFactory的初始化......
  • Gradle系列学习:Gradle的简介、常用命令和生命周期Gradle总结-生命周期
    一Gradle简介1.1graldeGradle是一个项目构建工具,它可以按照一定的规则把一堆目录和文件关联起来,自动化地构建从而形成一个项目。AndroidStudio的build就是通过Gradle来实......