React.Suspense
Suspense 是什么
主要是用来处理还没有完成的事情(也就是异步,异步加载组件,异步请求数据)
Suspense 的主要解决问题其实是对于异步操作会多次 state 变化的问题。
Suspense 是用来做什么的?
- 代码拆分 
服务于打包优化的代码拆分。lazy 和 suspense 配合使用
const A = React.lazy(() => import('./A'))
return (
  <Suspense fallback={<p>loading</p>}>
    <Route component={A} path="/a">
  </Suspense>
)
当路由切换时,加载新的组件代码,代码加载是异步的过程,此时 suspense 就会进如 fallback,那我们看到的就是 loading,显式的告诉用户正在加载,当代码加载完成就会展示 A 组件的内容,整个 loading 状态不用开发者去控制。
- 异步加载数据 
更新
export type SuspenseState = {|
  alreadyCaptured: boolean,
  didTimeout: boolean,
  timedOutAt: ExpirationTime,
|};if (finishedWork.effectTag & Callback) {
  const newState: SuspenseState = {
    alreadyCaptured: true,
    didTimeout: false,
    timedOutAt: NoWork,
  };
  finishedWork.memoizedState = newState;
  scheduleWork(finishedWork, Sync);
  return;
}最后更新于
这有帮助吗?