【问题标题】:Can getDerivedStateFromProps be used as an alternative to componentWillReceivePropsgetDerivedStateFromProps 可以用作 componentWillReceiveProps 的替代品吗
【发布时间】:2018-09-10 23:37:33
【问题描述】:

getDerivedStateFromProps 被添加为旧组件WillReceiveProps 的更安全替代方案。

这就是 16.3 文档所说的。此生命周期还有其他内容吗?还是只是名称更改?

【问题讨论】:

标签: reactjs


【解决方案1】:

getDerivedStateFromProps 不仅仅是对componentWillReceiveProps 的名称更改。它是一个静态方法,在组件实例化之后或接收到新的 props 之前调用,不像 componentWillReceiveProps 在初始渲染时不调用。

返回一个对象以更新状态以响应 prop 更改。

返回 null 表示状态没有变化。

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

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

您可以参考 this RFC 以详细了解为何进行此更改。

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2022-08-15
    • 2015-06-12
    • 2016-09-13
    • 1970-01-01
    相关资源
    最近更新 更多