在反应组件中,通常你不应该在其中改变道具。此外,父母只能改变道具,而不能直接改变状态。基于这两个事实,假设在componentDidUpdate的任何调用中都是正确的,例如
componentDidUpdate(prevProps:Readonly>,prevState:Readonly)
this.props可能与prevProps不同,或者this.state可能与prevState不同,但两种情况不能同时发生?
答案 0 :(得分:2)
React可以将多个setState()调用批处理为单个更新 性能
所以我最好的猜测是,出于性能原因,React可以将道具和状态更新组合在一起,只执行一次更新而不是两次。所以回答你的问题:
this.props可能与prevProps不同,或者this.state可能是 与prevState不同,但两种情况都不可能同时发生 时间?
我认为实际上可能就像之前所说的那样 - 出于性能原因。
答案 1 :(得分:0)
是的,实际上以下代码有时会输出true
(取决于上下文)。
componentDidUpdate(prevProps, prevState) {
const bothChanged = (prevProps !== this.props) && (prevState !== this.state);
console.log(bothChanged); // "true" (sometimes)
}