2

我已经阅读了多个来源,现在可以多次调用reactFiber(异步渲染) 。componentWillMount()

为什么会发生这种情况?

4

1 回答 1

2

Fiber 旨在支持的一件事是高优先级与低优先级更新。例如,动画是高优先级更新(因为很容易注意到 60fps 动画中的抖动),而来自 api 调用的更改将是低优先级(谁会注意到你必须等待的东西多出一百毫秒)无论如何,第二个?)。

因此,一个简单的示例,仅对 componentWillMount 进行标准调用,如下所示:我们进行低优先级更新,并且协调器开始通过组件树工作,在它们上调用 componentWillMount,以及执行其他协调工作。由于时间不足,它会暂停以让事件循环恢复。没有高优先级的东西,所以在下一次空闲回调时,它会从中断的地方继续,完成协调并提交更新。没有额外的组件WillMounts。

下一个示例:低优先级更新开始,并且和之前一样,协调器通过树对它们调用 componentWillMount 进行工作。和以前一样,它会暂停执行,但这次有高优先级更新。所以当协调恢复时,react 会将注意力转移到高优先级更新上。它协调该更新并提交它。现在可以自由地恢复低优先级更新,但它已经完成的工作需要丢弃,因为高优先级更新可能已经做出了影响低优先级更新将计算的内容的更改。由于它必须重新开始,它需要再次调用 componentWillUpdate。

于 2018-11-01T19:35:21.043 回答