Reactjs动态组件加载工厂

时间:2016-03-10 16:28:07

标签: reactjs autoload react-jsx

我在一个单独的文件中有几个reactjs组件(让它成为一个窗口),例如:

windows/window1.jsx
windows/window2.jsx
...
windows/windowN.jsx

我还有一个名为“WindowManager”的组件,我想用它来快速调用代码中的任何窗口。

现在我应该将所有可能的窗口存储在WindowManager.jsx中,如下所示:

var windowsTypes = {
    window1        : require('windows/window1.jsx'),
    window2        : require('windows/window1.jsx'),
    ...
    windowN        : require('windows/windowN.jsx')
}

...然后将其称为:

WindowManager.addWindow(windowTypes.windowN, { ... custom windowN-related props ...});

如果我要添加一个新窗口类型,那么我还应该添加一个新项目“windowN”:require(...)到“windowsTypes”列表中,在我看来并不是非常干的解决方案。我想要实现的是摆脱“windowsTypes”的必要性。

有没有干净的方法呢?可能在其他插件和库的帮助下?

1 个答案:

答案 0 :(得分:0)

为什么不简单地使用这样的方法:

function addWindowExt(windowName, windowProps) // where windowName is string
{
    WindowManager.addWindow(require('windows/' + windowName + '.jsx'), windowProps);
}

无需任何预填充地图。