【发布时间】:2020-09-09 16:04:28
【问题描述】:
在创建组件时 this.state 被定义。然后,在调用 setState 之后,React 以某种方式将旧状态和新状态拆分为两个对象。例如,使用钩子 shouldComponentUpdate 我们可以区分这两种状态,如下所示:
shouldComponentUpdate(nextProps, nextState) {
return (this.state.foo != nextState.foo);
}
我从 github 下载了 React 源代码,并找到了调用这些函数的位置,但很快就很难跟踪发生了什么。我从来没有发现这种分裂(或者他们实现了这种行为)发生在哪里。我确实发现 React 曾经/可以使用浅比较来区分状态,所以我想知道他们是否只是简单地克隆状态对象,然后将更新的值合并到其中一个中,以便以后可以比较它们中的两个。它是否正确?在这种情况下,如何处理嵌套结构?还是他们使用某个版本的 get/set 和/或某个版本的 Proxy API 以某种方式捕获更改?
【问题讨论】:
标签: javascript reactjs