Javascript 是否可以从字符串动态加载模块
目前,我正在使用以下代码使用WebPacke动态导入一些模块 我想知道是否有办法避免这种转变。 谢谢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
从“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