我想知道是否有一个好的方法来防止 Flink 的回落React。我正在使用React路由器,问题是当一个组件被挂起时,回退加载器会快速 Flink ,这非常烦人。我在这里看到了React suspense/lazy delay?的答案,它看起来像下面这样:
const Home = lazy(() => {
return Promise.all([
import('./components/Home'),
new Promise(resolve => setTimeout(resolve, 500))
]).then(([moduleExports]) => moduleExports);
});
但我的问题是,我有一个透明背景的覆盖加载微调器,组件实际上直到promise被解决才加载。这会让页面挂起半秒钟没有内容,实际上比旋转器的 Flink 更烦人。
所以我想问题是有没有人找到一个好方法来处理这个问题。我真的很想在页面上添加一些类似nprogress的东西,但不知道如何用React.suspense实现它。我可能不得不回到使用react可加载,但我真的不想当react自带基本相同的功能时。
3条答案
按热度按时间nuypyhwy1#
我最近也面临着同样的问题,我最终实现了一个组件,我用它来处理悬念的
fallback
。这个想法很简单,只要在一定的时间内不显示任何内容,然后显示加载程序。因此,假设在300ms内不会显示任何内容,延迟后它应该显示(在本例中)
ContentLoader
或任何您喜欢的内容。在Typescript中为
lazy-loader.ts
然后像这样使用
这并不影响进口。(我也认为这不是最佳的)让我知道这是否有帮助。
aiqt4smr2#
几周前我就在这个场景中,我希望Suspense回退不呈现,我们都知道如果惰性组件处于下载状态,回退将显示
这是Suspense的正常行为,与此无关,相反,我们可以通过复制网页的部分背景设计来欺骗最终用户的观点
因此,我们的目标只是复制部分背景设计,而不是 Flink 或一些不是友好的经验,以我们的最终用户的Angular
rhfm7lfc3#
编辑: