javascript - 为什么 React Fibre 可能会多次调用 componentWillMount?

标签 javascript reactjs frontend web-frontend react-16

我已经阅读了多个来源,现在使用 react Fiber(异步渲染)componentWillMount() 可能会被多次调用。

为什么会发生这种情况?

最佳答案

Fiber 旨在支持的事情之一是高优先级更新与低优先级更新。例如,动画是高优先级更新(因为 60fps 动画中的卡顿很容易被注意到),而 api 调用的更改将是低优先级(谁会注意到您必须等待的事情上有额外的一百毫秒)无论如何,第二个?)。

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

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

关于javascript - 为什么 React Fibre 可能会多次调用 componentWillMount?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53107319/

相关文章:

javascript - 使用正则表达式和 javascript 解析 twitter @name

reactjs - AWS Amplify ReactJS 应用程序无法重新加载页面

reactjs - 从 e.target.name 获取值并在 React hooks setState 中使用

javascript - 无法在 DHTMLX 中创建复选框

css - Angular:如何更改 <mat-nav-list> 中的图标?

javascript - chrome.tabs.executeScript : How to get access to variable from content script in background script?

javascript - 如何在 HERE Maps API for Javascript 中检索自定义标记坐标?

javascript - Angular- View 未加载

javascript - 如何禁止 ESLint 将项目添加到 useEffect 的观察者数组中?

html - 在弹出窗口中添加 float div