Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以从字符串动态加载模块_Javascript_Reactjs - Fatal编程技术网

Javascript 是否可以从字符串动态加载模块

Javascript 是否可以从字符串动态加载模块,javascript,reactjs,Javascript,Reactjs,目前,我正在使用以下代码使用WebPacke动态导入一些模块 我想知道是否有办法避免这种转变。 谢谢 从“React”导入React 从“./icon send.png”导入iconSend 从“./icon reload.png”导入iconReload 从“./icon download.png”导入iconDownload 从“./icon add doc.png”导入IConaddoc 从“.”导入ICONADAGENDAITEM/icon添加议程项目.png” 常量加载图标=(src

目前,我正在使用以下代码使用WebPacke动态导入一些模块

我想知道是否有办法避免这种转变。 谢谢

从“React”导入React
从“./icon send.png”导入iconSend
从“./icon reload.png”导入iconReload
从“./icon download.png”导入iconDownload
从“./icon add doc.png”导入IConaddoc
从“.”导入ICONADAGENDAITEM/icon添加议程项目.png”
常量加载图标=(src)=>{
开关(src){
案例“iconSend”:
返回iconSend
案例“iconReload”:
返回图标重新加载
案例“iconDownload”:
返回i下载
案例“IConaddoc”:
返回IConaddoc
案例“Iconadagendaitem”:
返回Iconadagendaitem
}
}
常量选项=({id,name,isActive,src})=>{
返回(
)
}

导出默认选项
我将使用地图。大概是这样的: 那么你就不需要开关了。 注意这是react和typescript。如果您使用的是plain react jsx而不是tsx,则不需要类型源

type Source='iconSend'|'iconReload'|'iconDownload'|'iconaddoc'|'iconAddAgendaItem';
常量图标:Map=newmap();
icons.set('iconSend',iconSend);
icons.set('iconReload',iconReload);
icons.set('iconDownload',iconDownload);
icons.set('iconaddoc',iconaddoc);
icons.set('iconAddAgendaItem',iconAddAgendaItem);
常量加载图标=(src)=>{
返回icons.get(src);
};
希望有帮助

可能的方法:

1-使用并在src中传递图像的确切名称,如下所示:

<img src={require(`./${src}`)} alt={name} />
2-准备一个带有键名和图像的对象,使用它直接获取图像

像这样:

import iconSend from './icon-send.png'
import iconReload from './icon-reload.png'
import iconDownload from './icon-download.png'
import iconAddDoc from './icon-add-doc.png'
import iconAddAgendaItem from './icon-add-agenda-item.png'

let hash = {
    iconSend,
    iconReload,
    iconDownload,
    iconAddDoc,
    iconAddAgendaItem
}

<img src={ hash[src] } alt={name} />
import iconSend from./icon send.png'
从“./icon reload.png”导入iconReload
从“./icon download.png”导入iconDownload
从“./icon add doc.png”导入IConaddoc
从“.”导入ICONADAGENDAITEM/icon添加议程项目.png”
让散列={
iconSend,
i重新加载,
i下载,
Iconaddoc,
Iconadagendaitem
}

嗨,你可以这样做

import React from 'react'
import iconSend from './icon-send.png'
import iconReload from './icon-reload.png'
import iconDownload from './icon-download.png'
import iconAddDoc from './icon-add-doc.png'
import iconAddAgendaItem from './icon-add-agenda-item.png'

const loadIcon = (src) => {
   let myDictionary = {
      iconSend: iconSend,
      iconDownload: iconDownload,
      iconAddDoc: iconAddDoc
   };
   return myDictionary[src];
}

const Option = ({id, name, isActive, src}) => {
  return (
    <div>
      <img src={loadIcon(src)} alt={name} />
    </div>
  )
}

export default Option
从“React”导入React
从“./icon send.png”导入iconSend
从“./icon reload.png”导入iconReload
从“./icon download.png”导入iconDownload
从“./icon add doc.png”导入IConaddoc
从“.”导入ICONADAGENDAITEM/icon添加议程项目.png”
常量加载图标=(src)=>{
让我的字典={
iconSend:iconSend,
iconDownload:iconDownload,
iconaddoc:iconaddoc
};
返回myDictionary[src];
}
常量选项=({id,name,isActive,src})=>{
返回(
)
}
导出默认选项

您甚至可以将loadIcon作为一个单独的文件,并在所有需要的应用程序中使用它。

您可以使用require示例代替导入:
const iconSend=require('./icon send.png')您能在不键入脚本的情况下编写它吗?@Radex,除了图标映射之外,它将是const icons=new Map();
import iconSend from './icon-send.png'
import iconReload from './icon-reload.png'
import iconDownload from './icon-download.png'
import iconAddDoc from './icon-add-doc.png'
import iconAddAgendaItem from './icon-add-agenda-item.png'

let hash = {
    iconSend,
    iconReload,
    iconDownload,
    iconAddDoc,
    iconAddAgendaItem
}

<img src={ hash[src] } alt={name} />
import React from 'react'
import iconSend from './icon-send.png'
import iconReload from './icon-reload.png'
import iconDownload from './icon-download.png'
import iconAddDoc from './icon-add-doc.png'
import iconAddAgendaItem from './icon-add-agenda-item.png'

const loadIcon = (src) => {
   let myDictionary = {
      iconSend: iconSend,
      iconDownload: iconDownload,
      iconAddDoc: iconAddDoc
   };
   return myDictionary[src];
}

const Option = ({id, name, isActive, src}) => {
  return (
    <div>
      <img src={loadIcon(src)} alt={name} />
    </div>
  )
}

export default Option