我现在已经阅读了多个资料,其中react
光纤(异步渲染)componentWillMount()
可以被多次调用。
为什么会这样?
答案 0 :(得分:2)
光纤旨在支持的一件事是高优先级与低优先级更新。例如,动画是高优先级的更新(因为很容易注意到60fps动画中的混乱),而从api调用进行的更改将是低优先级的(需要等一秒钟的人会花额外的100毫秒的时间)还是要秒?)。
因此,仅对componentWillMount进行一次标准调用的简单示例如下:我们进行了低优先级更新,协调器开始通过组件树进行工作,对它们调用componentWillMount并进行其他协调。工作。时间不多了,它会暂停以使事件循环恢复。没有高优先级的内容,因此在下一个空闲回调中,它从上次中断的地方开始,完成对帐并提交更新。没有多余的componentWillMounts。
下一个示例:低优先级更新开始,并且与协调器一样,它们通过对它们的树调用componentWillMount进行工作。像以前一样,它暂停执行,但是这次出现了高优先级更新。因此,当对帐恢复时,react将注意力转向高优先级更新。它协调该更新并提交。现在可以自由地恢复低优先级更新,但是已经放弃的工作已经被抛弃了,因为高优先级更新可能已经做出了影响低优先级更新计算内容的更改。由于必须重新开始,因此将需要再次调用componentWillUpdate。