当前位置: 首页 > 面试题库 >

React-动态导入组件

赏星河
2023-03-14
问题内容

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

    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

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



 类似资料:
  • 从一个无头的CMS中,我正在获取应该包含在某个页面上的组件列表。获取后,我将动态地导入提到的组件,如下所示: 然后我将这些组件作为子道具传递给某个容器。 然而,尽管一切都运行良好,但对于我拥有的每个组件,我都收到了一些警告: id为“sc-bdnylx”的组件styled.div已动态创建。您可能会看到这个警告,因为您在另一个组件中调用了styled。要解决这个问题,只能在任何呈现方法和函数组件之

  • 本文向大家介绍怎样动态导入组件?相关面试题,主要包含被问及怎样动态导入组件?时的应答技巧和注意事项,需要的朋友参考一下 自己使用 import 和 async/await 实现的异步组件 React.lazy 开源库 react-loadable 库/react-lazyload 库 babel 动态导入(Dynamic Import)

  • 问题内容: 与 哪个更好,为什么? 还是除了以后编写更少的代码外没有其他区别? 写作是否意味着只导入Component对象? 问题答案: 让您代替。它减少了React名称空间的键入和重复,这通常是一种理想的现代编码约定。 此外,Webpack 2和Rollup之类的工具会“摇晃”,这意味着任何未使用的导出都不会捆绑到您的最终代码中。使用/,您可以保证所有React的源代码都将被捆绑。使用,某些工具

  • 我们在前面章节中介绍的导出和导入语句称为“静态”导入。语法非常简单且严格。 首先,我们不能动态生成 import 的任何参数。 模块路径必须是原始类型字符串,不能是函数调用,下面这样的 import 行不通: import ... from getModuleName(); // Error, only from "string" is allowed 其次,我们无法根据条件或者在运行时导入: i

  • Examples With Dynamic Import ext.js 支持 JavaScript 的 TC39 提议dynamic import proposal。你可以动态导入 JavaScript 模块(如 React 组件)。 动态导入相当于把代码分成各个块管理。Next.js 服务端动态导入功能,你可以做很多炫酷事情。 下面介绍一些动态导入方式: 1. 基础支持 (同样支持 SSR) i

  • 问题内容: 这是我配置客户端以通过react-intl呈现正确语言的方式。 但是我想基于cookie中的语言环境动态导入localeData。因此,如果我的用户的语言环境是“ en”,我将仅加载到en.json文件中。 这样做的正确方法是什么?试图创建一个函数,但是我无法将数据正确传递给消息。 谢谢 问题答案: 通过以下代码解决了它。如果有人需要,请将其张贴在这里。