当前位置: 首页 > 面试题库 >

可以将getDerivedStateFromProps用作componentWillReceiveProps的替代方法

齐铭
2023-03-14
问题内容

将getDerivedStateFromProps添加为遗留componentWillReceiveProps的一种更安全的替代方法。

这就是16.3文档所说的内容。这个生命周期还有什么要改变的吗?还是只是改名?


问题答案:

getDerivedStateFromProps不只是将名称更改为componentWillReceiveProps。这是一个静态方法,在实例化组件之后或在接收新道具之前会调用它,componentWillReceiveProps这与在初始渲染时未调用过的方法不同。

返回对象以更新属性以响应道具更改。

返回null表示状态不变。

引入了静态生命周期方法以防止不安全地访问实例属性。

的目的getDerivedStateFromProps是仅根据道具更改来更新状态,而不基于可以执行的操作如API调用或函数调用prevProps。所有这些操作都可以在componentDidUpdate生命周期函数中完成,因为这是安全的,因为即使更改完成后componentWillReceiveProps,数据也会在渲染后到达,并且通常您会触发另一个重新渲染,这很可能在componentDidUpdate生命周期方法中完成。

您可以参考
此RFC, 以了解有关进行此更改的更多信息。



 类似资料:
  • 问题内容: 看起来它将在即将发布的版本中完全淘汰,取而代之的是新的生命周期方法:static getDerivedStateFromProps() 。 经检查,它看起来像你现在无法作出直接比较和,就像你可以在。有没有办法解决? 而且,它现在返回一个对象。我是否正确假设返回值本质上是? 以下是我在网上找到的示例:状态源自props / state 。 之前 后 问题答案: 有关删除的:你应该能够与组

  • 我有一个用Spring Boot构建的Camel应用程序。此应用程序使用ActiveMQ在两个系统之间传递消息。现在,我需要根据配置添加在ActiveMQ和Apache Kakfa之间选择作为消息代理的能力。 这是可以做到的吗?我对Kafka一无所知,但就我所阅读的内容而言,它的工作方式与ActiveMQ不同。 假设我的Camel应用程序向这样的队列发布消息: 我的申请表中有。yml此配置 我能用

  • 问题内容: 键入密码短语时 每个人都能听到敲击空格键的声音,因此在密码字段中显示空格也很合逻辑。所以我想要一些可以显示的东西 代替 这将使键入更加容易,同时几乎不降低安全性。 更新 更新Riduidel的评论之前请三思。当布鲁斯·施耐尔(Bruce Schneier)写 “是时候以明文形式显示大多数密码了”时 ,那么显示其中的一小部分也必须是正确的。尤其是显示仅通过聆听即可捕获的部分。 问题答案:

  • 问题内容: 我正在使用 EclipseLink的JAXB实现的一些非标准扩展,并且要启用该实现,必须使用jaxb.properties对其进行配置。效果很好。 但是,由于生成错误,属性文件未包含在正确的位置,从而导致使用默认的JAXB,该文件没有任何错误,只是继续解析XML文件,忽略了非标准扩展名,给我留下了一个非工作bean。 为了使它更加健壮,我想摆脱属性文件,并在代码中指定上下文配置。由于它

  • 问题内容: 我目前在我的Java应用程序中使用memcached,总体而言,它运行良好。 对我而言最重要的memcached功能包括: 它的速度很快,因为读写是在内存中,并且不会接触磁盘 这只是一个键/值存储(因为这就是我所有的应用程序需求) 它是分布式的 通过使每个对象恰好位于一台服务器上,它有效地使用了内存 它不假定对象来自数据库(因为我的对象不是数据库对象) 但是,有一件我想做的事情是mem

  • 问题内容: 在Java中,您可以创建一个仅包含抽象方法的抽象类。另一方面,您可以创建一个声明相同方法的接口。在这种情况下,可以使用抽象类代替接口吗? 问题答案: 不总是: 一堂课只能延伸 一 堂课 一个类可以实现 多个 接口 Sun文档 进行了更详细的比较: 抽象类与接口 与接口不同,抽象类可以包含非静态和最终字段,并且可以包含已实现的方法。此类抽象类与接口相似,不同之处在于它们提供了部分实现,将