异步组件
利用 React.lazy 将普通组件改造为异步组件
const Todo = React.lazy(
() => new Promise<{ default: React.ComponentType<any> }>(async (resolve) => {
const module = await import("./Todo");
db.read("todos").then((t) => {
resolve({
...module,
default: module.default(todos) as unknown as React.ComponentType<any>,
});
});
})
);
function Tab() {
return (
<div>
<Suspense fallback={<div>Loading...</div>}>
<Todo />
</Suspense>
</div>
);
}
通常 React.lazy 只是用于异步加载组件。
const OtherComponent = React.lazy(() => import('./OtherComponent'));
import 返回的是一个 Promise<{ default: React.ComponentType<any> }>
。只有我们自己构建一个能返回该类型的Promise,在返回Promise之前就可以做一些异步请求数据或初始化之类的操作。