2017-05-16 61 views
0

我有一个组件在应用程序的不同位置弹出。 在弹出的组件中,我有几个按其用法分组的子组件,这些组件已被静态导入反应:运行时加载组件

然后我用switch语句来渲染取决于通过道具使用成分的不同群体。

这是工作正常,但switch语句(和进口)增长。

他们是我可以在运行时传递组件并让它们呈现的一种方式。因此,在任何时候只有一组组件在弹出窗口中存在/实例化?只是想弄死switch语句和静态进口

伪代码

<renderPopup children={[ componentA, componentB ]} /> 

<renderPopup children={[ componentA, componentB, componentC ]} /> 

难道这东西的WebPack能做什么呢?但宁愿它是代码而不是配置?

子组件将有静态导入等。

希望这是有道理的。

回答

1

是的,有一种叫做异步代码在Webpack中分裂。

下面是文档:https://webpack.js.org/guides/code-splitting-async/#require-ensure-

基本上,你可以告诉的WebPack在一些地区建立一个分割点,然后用菜刀技巧,使仅在需要时这些模块的负载。使用路由可以很容易,因为react-router已经具备了这种配置,但在清单和注册系统中这样做并不难。

+0

谢谢你的回答,只需要现在解决这个问题:-)我已经提高了你的答案 – Rory

0

这似乎是我应该做的

Dynamic System.import with webpack?

Webpacks System.import似乎是答案,但如果有另一种方式请张贴

+1

为了让您知道,System.import已被弃用。他们现在推荐使用'import()'。 (https://webpack.js.org/guides/code-splitting-async/#system-import-is-deprecated)我仍然更喜欢'require.ensure',因为它可以让你命名你的块。 – gretro

+0

@gretro你可以在'import()'中命名块,它在版本2.4.0中加入https://github.com/webpack/webpack/releases/tag/v2.4.0 – Everettss

+0

哦,真棒。我会再看一遍。我更喜欢有一个承诺,但这种缺乏功能激怒了我。 – gretro