如何使用React动态导入组件?/动态导入

javascript110899

我只是用React编程了很短的时间,但我不知道是否有更有效的方法来执行此任务。我有一系列与某些SVG文件相对应的文件。一个例子如下。


export default function CheckIcon(props) {
  return (

    <Icon {...props}>
        options={ CheckIcon }
        />
  );
}

CheckIcon.displayName = 'CheckIcon';

然后将它们导入到我称为Icon.js的组件中,在其中为每种情况进行切换并返回相应的组件。

import React from 'react';
import CloseIcon from './icons/CloseIcon';
import CheckIcon from './icons/CheckIcon';
import SumIcon from './icons/SumIcon';
import SubtractIcon from './icons/SubtractIcon';
import MultiplyIcon from './icons/MultiplyIcon';
import DivideIcon from './icons/DivideIcon';

export default function Icon({ type, ...props }) {
  const getIcon = () => {
    switch (type) {
      case 'close':
        return <CloseIcon {...props} />;
      case 'check':
        return <CheckIcon {...props} />;
      case 'sum':
        return <SumIcon {...props} />;
      case 'subtract':
        return <SubtractIcon {...props} />;
      case 'multiply':
        return <MultiplyIcon {...props} />;
      case 'divide':
        return <DivideIcon {...props} />;
      default:
        break;
    }
  };

  return getIcon();
}


最后,我将Icon.js文件导入到要显示html的组件中

  <div>

    {() => {
      return (
          <Icon type="close" />
          <Icon type="check" />
          <Icon type="sum" />
          <Icon type="subtract" />
          <Icon type="multiply" />
          <Icon type="divide" />
      );
    }}
  </div>

我的问题是,有没有更有效的方法将与每个段对应的不同组件动态导入到Icon.js组件中?

感谢大家的时间和事先的帮助。

tmhao2005

我认为您也可以通过使用type图标名称require来动态加载图标,如下所示:

// Icon.js
import React from 'react';

export default function Icon({ type, ...props }) {
  const TheIcon = require(`./icons/${type}`).default;

  return <TheIcon {...props} />
}

// Then use it
import Icon from './Icon';

<Icon type="CloseIcon" />

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React 17.0.1-使用动态路径导入组件

来自分类Dev

使用React动态导入文件

来自分类Dev

如何使用NextJS的动态导入将值传递给组件

来自分类Dev

Vue 3将动态组件与动态导入配合使用

来自分类Dev

React:动态导入jsx

来自分类Dev

动态导入未知组件-NextJs

来自分类Dev

如何动态导入Python?

来自分类Dev

使用React.lazy与Webpack动态导入?

来自分类Dev

如何使用exec动态导入模块

来自分类Dev

在React中动态导入SVG

来自分类Dev

JavaScript React Meteor的动态导入

来自分类Dev

如何动态导入Zig模块?

来自分类Dev

如何动态导入更改模块?

来自分类Dev

如何通过文件动态导入?

来自分类Dev

是否动态加载Web组件/ HTML导入?

来自分类Dev

动态导入的组件被视为JSX元素

来自分类Dev

在React with React Hooks上对视频使用动态导入

来自分类Dev

无法使用动态导入的模块

来自分类Dev

React:如何在Jest测试中涵盖动态导入?

来自分类Dev

动态构建路径{或动态组件导入} Angular 2

来自分类Dev

如何使用rollupjs动态导入名称由参数定义的模块?

来自分类Dev

React测试库,动态导入和React Router DOM始终呈现未找到的组件

来自分类Dev

React动态导入不会加载类

来自分类Dev

在React中基于this.props的动态导入

来自分类Dev

React.lazy“无法导入动态导入的模块”

来自分类Dev

如何动态导入SVG并内嵌呈现

来自分类Dev

如何动态调用导入的命名空间?

来自分类Dev

无法使用Cocoapods动态框架导入RestKit

来自分类Dev

动态导入模块