reactjs - 使用地图在 React 中渲染多个图像
问题描述
我有带有键 img 的对象,值是放置在 src 文件夹“/images”中的图像文件夹的相对路径。我正在使用 map 循环解构数据,并使用如下简单模板将其添加到 DOM:
<div key={id}>
<img src={img + '.jpg'} alt='{title}' />
</div>
我的数据对象如下所示:
const category = [
{
id: 1,
title: 'cizme',
img: './images/cizme',
link: './cizme'},
...
数据(类别)在 App 组件中定义
import data from './data';
import Home from './Home';
import logo from './images/logo_fin-01.png';
import Navbar from './Navbar';
function App() {
return (
<div className='App'>
<Navbar logo={logo} />
<Home data={data} />
</div>
);
}
export default App;
和家庭补偿是:
const Home = ({ data }) => {
return (
<div className='kat'>
{data.map(({ id, title, img, link }) => (
<li key={id}>
<span>{title}</span>
<div className='img-container'>
<img src={img + '.jpg'} alt={title}></img>
</div>
</li>
))}
</div>
);
};
export default Home;
现在,在浏览器路径中正确显示,没有错误,但它说图像“无法加载图像”。我试图将图像文件夹复制到公共,但后来我得到错误“它超出范围或像这样(我忘了)'。那我该怎么办?
更新: require() 在沙箱中工作,localy 没有。
https://codesandbox.io/embed/zealous-christian-0j3v3?fontsize=14&hidenavigation=1&theme=dark
解决方案
您当前的方法不起作用(除非您必须通过循环导入图像),因为您已将这些图像保存在src
文件夹中。通过将图像 url 保持为相对于当前文件夹将不起作用,因为当将 URL 传递给 src(而不是导入的图像)时,您的浏览器开始呈现,img
'src
属性将相对于 URL 查找,而不是加载和执行 javascript 文件的文件夹。
换句话说,如果我为这个映射的图像路由提供服务的组件位于 URL xyz.com/something/currentScreen
,那么'./images/cizme' + '.jpg'
将转换为xyz.com/something/images/cizme.jpg
,它不存在。
由于您正在尝试动态呈现这些图像,因此一个好方法是将它们放在public
文件夹中(然后放在“图像”文件夹中,因为您的 URL 是这样说的),然后拥有'/images/cizme' + '.jpg'
这将导致xyz.com/images/cizme.jpg
正确加载,因为它们存在public
文件夹内。
编辑:你能确认你的浏览器路径是正确的吗?尝试按照评论中的说明打开网络选项卡。
推荐阅读
- javascript - 使用 jquery 将 PHP 转换为 PDF
- android - 不能依赖 Firebase ML Kit
- wordpress - How can I easily access all post titles for editing from WooCommerce in phpMyAdmin?
- sql - 在WHERE子句PSQL中指定月份时如何每周生成一行
- angular - 如何在角度表中的特定名称上显示按钮
- c# - 将裁切/出血标记添加到 PDF - PDFsharp
- sql - 在 SQL 中创建新的计算列
- xcode - 垂直步进设计 xcode11
- html - 在到达顶部之前滚动元素
- python - 使用 spacy 区分两种类型的名词