将getDerivedStateFromProps添加为遗留componentWillReceiveProps的一种更安全的替代方法。
这就是16.3文档所说的内容。这个生命周期还有什么要改变的吗?还是只是改名?
getDerivedStateFromProps不只是将名称更改为componentWillReceiveProps。这是一个静态方法,在实例化组件之后或在接收新道具之前会调用它,componentWillReceiveProps这与在初始渲染时未调用过的方法不同。
getDerivedStateFromProps
componentWillReceiveProps
返回对象以更新属性以响应道具更改。 返回null表示状态不变。
返回对象以更新属性以响应道具更改。
返回null表示状态不变。
引入了静态生命周期方法以防止不安全地访问实例属性。
的目的getDerivedStateFromProps是仅根据道具更改来更新状态,而不基于可以执行的操作如API调用或函数调用prevProps。所有这些操作都可以在componentDidUpdate生命周期函数中完成,因为这是安全的,因为即使更改完成后componentWillReceiveProps,数据也会在渲染后到达,并且通常您会触发另一个重新渲染,这很可能在componentDidUpdate生命周期方法中完成。
prevProps
componentDidUpdate
您可以参考 此RFC, 以了解有关进行此更改的更多信息。