我已经阅读了多个来源,现在使用 react
Fiber(异步渲染)componentWillMount()
可能会被多次调用。
为什么会发生这种情况?
最佳答案
Fiber 旨在支持的事情之一是高优先级更新与低优先级更新。例如,动画是高优先级更新(因为 60fps 动画中的卡顿很容易被注意到),而 api 调用的更改将是低优先级(谁会注意到您必须等待的事情上有额外的一百毫秒)无论如何,第二个?)。
因此,一个简单的示例如下:我们进行低优先级更新,协调器开始在组件树中工作,对它们调用 componentWillMount,并进行其他协调工作。由于时间不够,它会暂停以让事件循环恢复。没有高优先级的内容,因此在下一个空闲回调时,它会从上次中断的地方继续,完成协调并提交更新。没有额外的 componentWillMount。
下一个示例:低优先级更新开始,并且像以前一样,协调器通过调用 componentWillMount 的树进行工作。和之前一样,它暂停执行,但是这次出现了高优先级更新。因此,当协调恢复时,React 将注意力转向高优先级更新。它协调该更新并提交它。现在可以自由地恢复低优先级更新,但它已经完成的工作需要被丢弃,因为高优先级更新可能做出了影响低优先级更新将计算的更改。由于它必须重新开始,因此需要再次调用 componentWillUpdate。
关于javascript - 为什么 React Fibre 可能会多次调用 componentWillMount?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53107319/