getDerivedStateFromProps可以用作componentWillReceiveProps的替代方法

时间:2018-04-01 15:32:21

标签: reactjs

  

getDerivedStateFromProps被添加为传统componentWillReceiveProps的更安全的替代品。

这是16.3文档所说的。这个生命周期还有什么更多的东西还是只是一个名称变化?

1 个答案:

答案 0 :(得分:6)

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

  

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

     

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

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

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

您可以参考 this RFC ,详细了解此更改的原因。