我尝试通过props将本地存储的图像名称传递给组件。问题是
<img src={require(`../assets/img/${iconName}.svg`)} />不起作用。我已经使用create-react-app引导了项目。该组件如下所示:
import React from 'react';
import best from '../../assets/img/best.svg';
import cashback from '../../assets/img/cashback.svg';
import shopping from '../../assets/img/shopping.svg';
const Card = ({iconName}) => {
return (
<>
<img alt="icon" src={require(`../assets/img/${iconName}.svg`)} />
</>
);
};
export default Card;SVG加载失败。即使我写下这样的东西:
<img src={require('../assets/img/best.svg')} />
<img src={`${iconName}`} />它不起作用。这会是CRA中的webpack加载器的问题吗?
发布于 2020-05-16 19:45:22
因为这些都是SVG,我想,您可能想要显示固定数量的图像。此时,您可能需要在开始时将它们全部导入。根据您在react周围使用的工具,动态数据加载可能会工作,也可能不会工作。例如,你的方法肯定不适用于Next.JS (一个围绕react的框架)。
因此,我建议将它们全部加载,放到一个map中,并使用它来代替动态的请求。
import React from 'react';
import best from '../../assets/img/best.svg';
import cashback from '../../assets/img/cashback.svg';
import shopping from '../../assets/img/shopping.svg';
const icons = Object.freeze({best, cashback, shopping});
const Card = ({iconName}) => (<img alt="icon" src={icons[iconName]} />);
export default Card;https://stackoverflow.com/questions/61835875
复制相似问题