getDerivedStateFromProps

getDerivedStateFromProps

本文介绍了为什么使用 getDerivedStateFromProps 而不是 componentDidUpdate?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

正如在这个 React Github 问题中所读到的那样>

render() 的开销相对较小

As read in this React Github issue I see more and more that

在 React 16.3 中,我想知道为什么要使用新的 getDerivedStateFromProps 而不是 componentDidUpdate?

想象一下这个例子:

Imagine this example:

对比

versus

后者看起来更简单,因为它只使用现有的 API,看起来就像我们以前在 componentWillReceiveProps 中所做的那样,所以我不明白为什么用户会选择 getDerivedStateFromProps?有什么好处?

componentDidUpdate(prevProps, prevState) { if (!prevState.isModalOpen && this.props.isReady) { this.setState({ isModalOpen: true }); }}

谢谢!

推荐答案

所以 Dan Abramov 在 Twitter 上回复了

a> 并且您应该使用 getDerivedStateFromProps 而不是 componentDidUpdate + setState 的原因似乎有两个:

So Dan Abramov answered on Twitter and it seems like there are 2 reasons why you should use getDerivedStateFromProps instead of componentDidUpdate + setState:

componentDidUpdate 中的 setState 会导致额外的渲染(用户无法直接感知,但会减慢您的应用程序的速度).而且你的渲染方法不能假设状态已经准备好了(因为这不是第一次).