可以使用 getDerivedStateFromProps 作为 componentWillReceiveProps 的替代方案

IT技术 reactjs
2021-04-11 04:29:03

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

这就是 16.3 文档所说的。这个生命周期还有什么其他的吗,还是只是更名?

1个回答

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

返回一个对象来更新状态以响应 prop 的变化。

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

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

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

您可以参考此 RFC以了解更多有关进行此更改的原因。