做奖状的网站,网站html设置首页,宣传片拍摄费用,深圳网络公司接单React Suspense组件的作用是当组件未完成加载时#xff0c;显示 fallback 组件。那么 Suspense 是如何实现的呢#xff1f;React 的渲染是通过 Fiber 进行的#xff0c;Suspense 的更新机制也是要围绕 Fiber 架构进行的。Suspense 是由两部分组成#xff0c;实际 UI 子组件…React Suspense组件的作用是当组件未完成加载时显示 fallback 组件。那么 Suspense 是如何实现的呢React 的渲染是通过 Fiber 进行的Suspense 的更新机制也是要围绕 Fiber 架构进行的。Suspense 是由两部分组成实际 UI 子组件 primary 和 fallback 组件。Suspense 正常的流程是初始化时显示 fallback 组件当 primary 组件完成加载之后显示 primary 组件。这里的关键点就是如何触发 Primary 组件的显示这里是要通过一个回调的方法进行更新当组件完成加载后通知 UI 进行渲染更新。
我们看一下 React 是怎么实现 Suspense首先通过 Lazy 实现一个 Suspense 效果 Suspense fallback{Loading /}h2Preview/h2MarkdownPreview markdown{markdown} //SuspenseSuspense Primary 组件抛出 payload._result_result 是 promise 对象组件加载完成之后调用 Resolve。 Throw 抛出的异常在 handleError 方法中进行处理。 调用 throwException 处理 promise 下图中 markSuspenseBoundaryShouldCapture 用于显示 fallback注册ping / retry 监听器用于绑定监听器这里监听器负责处理 Promise。 在 attachRetryListener 中加 wakeable 加入 update 队列wakeable 就是 promise 对象。
总结
Suspense 组件通过监听 Promise 来判断 Primary 组件是否完成加载如果加载完成通过正常的 Fiber Update Queue 完成渲染。