在 React 组件中使用循环显示图像
Display images with a loop in a React component
我正在使用 Gatbyjs,我想在一个卡片组件中显示多张图片。 似乎应该起作用,但它不起作用。我没有收到任何其他特定错误:
GEThttp://localhost:8000/[object Module]
[HTTP/1.1 404 Not Found 13ms]
我尝试为 src
属性使用绝对路径,但它也不起作用。也没有像导入卡片组件文件中的每个图像这样令人讨厌的事情,并以这种方式调用它们:
<img src={`${Img}`} />.
组件如下:
const ServiceCard = ({ title, subtitle, text, logos }) => {
const displayLogos = logos.split(",").map((logo) => (
<li key={logo} className="tech-logo">
<img
key={logo}
src={require(`../../images/tech-logos/${logo}.png`)}
alt={`${logo} logo`}
height="30px"
width="30px"
/>
</li>
));
return (
<div className="service-card">
<h1 className="service-card-title">{title}</h1>
<h2 className="service-card-subtitle">{subtitle}</h2>
<p className="service-card-text">{text}</p>
<ul className="tech-logo-list">{displayLogos}</ul>
</div>
);
};
编辑:
这个组件是这样使用的:
<ServiceCard
title="Text string"
subtitle="e-shop"
text="random text"
logos="React,Ror,Gatsby,Wordpress,Drupal,Js,Php,Mysql,Pgsql"
/>
正如我们所料,console.log("tech is " + logo);
in displayLogos
returns 为逗号之间连接的每个字符串创建一个新字符串。
好吧,我设法通过在 require()
:
末尾添加 .default
来解决这个问题
const displayLogos = logos.map((logo) => (
<li key={logo} className="tech-logo">
<img
key={logo}
src={require(`../../images/tech-logos/${logo}.png`).default}
alt={`${logo} logo`}
height="30px"
width="30px"
/>
</li>
));
找到想法 here。
我正在使用 Gatbyjs,我想在一个卡片组件中显示多张图片。
GEThttp://localhost:8000/[object Module]
[HTTP/1.1 404 Not Found 13ms]
我尝试为 src
属性使用绝对路径,但它也不起作用。也没有像导入卡片组件文件中的每个图像这样令人讨厌的事情,并以这种方式调用它们:
<img src={`${Img}`} />.
组件如下:
const ServiceCard = ({ title, subtitle, text, logos }) => {
const displayLogos = logos.split(",").map((logo) => (
<li key={logo} className="tech-logo">
<img
key={logo}
src={require(`../../images/tech-logos/${logo}.png`)}
alt={`${logo} logo`}
height="30px"
width="30px"
/>
</li>
));
return (
<div className="service-card">
<h1 className="service-card-title">{title}</h1>
<h2 className="service-card-subtitle">{subtitle}</h2>
<p className="service-card-text">{text}</p>
<ul className="tech-logo-list">{displayLogos}</ul>
</div>
);
};
编辑: 这个组件是这样使用的:
<ServiceCard
title="Text string"
subtitle="e-shop"
text="random text"
logos="React,Ror,Gatsby,Wordpress,Drupal,Js,Php,Mysql,Pgsql"
/>
正如我们所料,console.log("tech is " + logo);
in displayLogos
returns 为逗号之间连接的每个字符串创建一个新字符串。
好吧,我设法通过在 require()
:
.default
来解决这个问题
const displayLogos = logos.map((logo) => (
<li key={logo} className="tech-logo">
<img
key={logo}
src={require(`../../images/tech-logos/${logo}.png`).default}
alt={`${logo} logo`}
height="30px"
width="30px"
/>
</li>
));
找到想法 here。