首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在create-react-app中动态导入图片

如何在create-react-app中动态导入图片
EN

Stack Overflow用户
提问于 2020-05-16 19:15:51
回答 1查看 808关注 0票数 1

我尝试通过props将本地存储的图像名称传递给组件。问题是

代码语言:javascript
复制
<img src={require(`../assets/img/${iconName}.svg`)} />

不起作用。我已经使用create-react-app引导了项目。该组件如下所示:

代码语言:javascript
复制
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加载失败。即使我写下这样的东西:

代码语言:javascript
复制
<img src={require('../assets/img/best.svg')} />
<img src={`${iconName}`} />

它不起作用。这会是CRA中的webpack加载器的问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-16 19:45:22

因为这些都是SVG,我想,您可能想要显示固定数量的图像。此时,您可能需要在开始时将它们全部导入。根据您在react周围使用的工具,动态数据加载可能会工作,也可能不会工作。例如,你的方法肯定不适用于Next.JS (一个围绕react的框架)。

因此,我建议将它们全部加载,放到一个map中,并使用它来代替动态的请求。

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61835875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档