我正在尝试使用新的 React Lazy 和 Suspense 来创建后备加载组件。这很好用,但回退只显示几毫秒。有没有办法添加额外的延迟或最短时间,以便我可以在呈现下一个组件之前显示来自该组件的动画?
现在延迟导入
const Home = lazy(() => import("./home"));
const Products = lazy(() => import("./home/products"));
等待组件:
function WaitingComponent(Component) {
return props => (
<Suspense fallback={<Loading />}>
<Component {...props} />
</Suspense>
);
}
我可以做这样的事情吗?
const Home = lazy(() => {
setTimeout(import("./home"), 300);
});
原文由 vemund 发布,翻译遵循 CC BY-SA 4.0 许可协议
lazy
函数应该返回{ default: ... }
对象的承诺,该对象由具有默认导出的模块的import()
返回。setTimeout
不返回承诺,不能那样使用。虽然任意承诺可以:如果目标是提供 最小 延迟,这不是一个好的选择,因为这会导致 额外的 延迟。
最小延迟是: