首页 > 其他分享 >React.Component详细 API(生命周期)

React.Component详细 API(生命周期)

时间:2023-02-07 22:00:42浏览次数:67  
标签:生命周期 调用 Component 更新 React API props 组件 方法

前言:几年不用react,已发生翻天覆地变化,比如生命周期的方法,现在重写学习,记录变化。

 

 

组件的生命周期

每个组件都包含 “生命周期方法”,你可以重写这些方法,以便于在运行过程中特定的阶段执行这些方法。你可以使用此生命周期图谱作为速查表。在下述列表中,常用的生命周期方法会被加粗。其余生命周期函数的使用则相对罕见。

挂载

当组件实例被创建并插入 DOM 中时,其生命周期调用顺序如下:

注意:

下述生命周期方法即将过时,在新代码中应该避免使用它们

对我来说是新方法:

getDerivedStateFromProps 会在调用 render 方法之前调用,并且在初始挂载及后续更新时都会被调用。它应返回一个对象来更新 state,如果返回 null 则不更新任何内容。

此方法适用于罕见的用例,即 state 的值在任何时候都取决于 props。例如,实现 <Transition> 组件可能很方便,该组件会比较当前组件与下一组件,以决定针对哪些组件进行转场动画。

 

 

更新

当组件的 props 或 state 发生变化时会触发更新。组件更新的生命周期调用顺序如下:

注意:

下述方法即将过时,在新代码中应该避免使用它们

对我来说是新方法:

componentDidUpdate(prevProps, prevState, snapshot)

会在更新后会被立即调用。首次渲染不会执行此方法。

当组件更新后,可以在此处对 DOM 进行操作。如果你对更新前后的 props 进行了比较,也可以选择在此处进行网络请求。(例如,当 props 未发生变化时,则不会执行网络请求)。

componentDidUpdate(prevProps) {
  // 典型用法(不要忘记比较 props):
  if (this.props.userID !== prevProps.userID) {
    this.fetchData(this.props.userID);
  }
}

你也可以在 componentDidUpdate() 中直接调用 setState(),但请注意它必须被包裹在一个条件语句里,正如上述的例子那样进行处理,否则会导致死循环。它还会导致额外的重新渲染,虽然用户不可见,但会影响组件性能。不要将 props “镜像”给 state,请考虑直接使用 props。

 

卸载

当组件从 DOM 中移除时会调用如下方法:

错误处理

当渲染过程,生命周期,或子组件的构造函数中抛出错误时,会调用如下方法:

 

其他 APIs

组件还提供了一些额外的 API:

class 属性

实例属性

 

每一个方法的详细参考:

https://react.docschina.org/docs/react-component.html#componentdidmount

 

标签:生命周期,调用,Component,更新,React,API,props,组件,方法
From: https://www.cnblogs.com/zccst/p/17099969.html

相关文章

  • vue3 | shallowReactive 、shallowRef、triggerRef
    shallowReactive使用reactive声明的变量为递归监听,使用shallowReactive声明的变量为非递归监听(通俗的讲就是reactive创建的对象将会被vue内部进行递归监听,可以监......
  • API的风格
    好奇怪呀,感觉所有风格不都差不多嘛1.RESTREST(REpresentationalStateTransfer),首次出现在2000年RoyThomasFielding的博士论文中,提出了一种万维网的软件架构风格-RE......
  • 发现一个API接口自动化测试平台
    gitee地址:https://gitee.com/season-fan/autometer-api记录一下:1.API测试平台的5个需求:①支持不同的项目,不同的角色,技术人员多人协作②支持定义不同的测试环境③支持......
  • ReactiveCocoa小结
    ReactiveCocoa(简称RAC)是由GitHub团队开源的一套基于Cocoa的并且具有FRP特性的框架。FRP(FunctionalReactiveProgramming)即响应式编程。RAC就是一个第三方库,使用它可以大大......
  • 树形DP (cf 219D Choosing Capital for Treeland)
    题意翻译题目描述Treeland国有n个城市,这n个城市连成了一颗树,有n-1条道路连接了所有城市。每条道路只能单向通行。现在政府需要决定选择哪个城市为首都。假如城市i成为了首都......
  • 厉害了!100多个API接口分享!热门、常用的都有
    在开发过程中,我们使用已经开发好的API接口,就会大大提升开发的效率,达到事半功倍的效果。今天给大家整理了很多API接口!各种免费API接口整理,主要来自于APISpace和百度智能......
  • Eolink 入门教程:钉钉 API 对接
    系列文章:Eolink神技之一:基于数据库智能生成API文档Eolink神技之二:API全生命周期管理前言这里我通过Eolink的Webhook功能可以对接企业微信、蓝信、飞书等工......
  • 学习- vue 中 API $attr 用法
    2.4.0新增定义:包含了父作用域不作为prop被识别(且获取)的attribute绑定(class和style除外)。当一个组件没有声明任何prop时,这里会包含所有父作用域的绑定(除class和......
  • UIScrollView全部API学习。
    交流群:QQ529560119>设定滚定条的样式typedefNS_ENUM(NSInteger,UIScrollViewIndicatorStyle){UIScrollViewIndicatorStyleDefault,//blackwithwhiteborder.......
  • NSSet全部API学习。
    /****************集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址,不过NSArray是有序的集合,NSSet是无序的集合,同时NSSet可以保证数据的唯一性,当插入相同的数据时......