javascript - React - 动态导入组件

标签 javascript reactjs import components react-component

我有一个页面,它根据用户输入呈现不同的组件。目前,我已经对每个组件的导入进行了硬编码,如下所示:

    import React, { Component } from 'react'
    import Component1 from './Component1'
    import Component2 from './Component2'
    import Component3 from './Component3'

    class Main extends Component {
        render() {
            var components = {
                'Component1': Component1,
                'Component2': Component2,
                'Component3': Component3
            };
            var type = 'Component1';  // just an example
            var MyComponent = Components[type];
            return <MyComponent />
        }
    }

    export default Main

但是,我一直在更改/添加组件。有没有办法让一个文件只存储组件的名称和路径,然后将这些动态导入另一个文件?

最佳答案

我认为对于我试图实现的目标可能存在一些混淆。我设法解决了我遇到的问题,并在下面展示了我的代码,展示了我是如何解决它的。

单独的文件(ComponentIndex.js):

    let Components = {};

    Components['Component1'] = require('./Component1').default;
    Components['Component2'] = require('./Component2').default;
    Components['Component3'] = require('./Component3').default;

    export default Components

主文件(Main.js):

    import React, { Component } from 'react';
    import Components from './ComponentIndex';

    class Main extends Component {
        render () {
            var type = 'Component1'; // example variable - will change from user input
            const ComponentToRender = Components[type];
            return <ComponentToRender/>
        }
    }

    export default Main

这种方法允许我非常快速地添加/删除组件,因为导入在一个文件中并且一次只需要更改一行。

关于javascript - React - 动态导入组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268507/

相关文章:

javascript - 获取当前时间,然后用javascript显示它

javascript oop 帮助

javascript - 如何在 react.js 中包含 pdf 链接

javascript - React Virtualized Select css 问题

javascript - windows 调整大小后发生 setState 错误并使用react。尝试将动态宽度作为 Prop 传递

javascript - Firefox 中的 Websockets 不适用于多个 HTTPS 页面

javascript - jQuery JavaScript : adding browser history back with hashtag?

python - 通过更改和导入模块在 Python 中传递 "local"变量?

javascript - 如何从外部文件将 @exclude 规则添加到用户脚本?

java - 导入自定义 Java 类