我想延迟加载组件以减小初始捆绑包大小,并使用React Router通过代码拆分即时获取组件。
但是,在使用React Suspense时,它们会迫使您使用后备进行加载。
这行不通:
const lazyLoadComponent = Component =>
props => (
<Suspense> // Missing fallback property
<Component {...props} />
</Suspense>
);
就我而言,我正在从服务器渲染html,所以我不想使用微调器。
这会在我的屏幕上造成无用的闪烁!即:
在我的情况下,html对应于已加载的react组件。
是否有任何已知的技巧可以轻松解决此问题(除了为复制html(!!)的任何路由创建加载程序外,顺便说一下,这会使惰性加载变得无用)。
我对“强制”添加一个加载器有些不满意,并且我不明白将其强制性化的决定背后的逻辑。
我为此在Github上创建了一个问题:https : //github.com/facebook/react/issues/19715
当前没有使用React-Router / React的干净解决方案。
但是,在将来使用并发模式的版本中可以预见到这一点。如Dan Abramov所述:
关于您的具体功能要求,我认为我可以略微调整一下。您并不是要“可选的备用广告”,因为这对新屏幕没有意义(我们必须展示一些内容)。我相信您正在寻找的是一种如果内容已经包含HTML则跳过显示后备内容的方法。这正是React在并发模式下的行为,因此功能请求已经实现(最终将在稳定版本中成为默认行为)。
对我来说,等待是没有问题的,因此当前我将省略延迟加载路由,因为这涉及到一个爱好项目,并且我有时间等待将来的发布。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句