【发布时间】:2021-03-13 18:47:25
【问题描述】:
我有一个将信息传递给构造函数的 json 文件。在传入的 json 中有 3 个字符串,它们是 3 个不同图像文件的路径。
然后我尝试获取这些字符串并将它们用作轮播中 img 标记的 src。但是,我在下面这样做的方式只会显示替代文本。
如何在反应环境中使用传递给构造函数的字符串作为 img src?
如果我有 img1、img2 或 img3 在警报中显示自己,它实际上会显示正确的路径。
已编辑
JSON 包含您在下面看到的内容
'img1':'./images/forest.PNG',
'img2':'./images/desert.PNG',
'img3':'./images/city.PNG'
在 App.js 中它被传递给下面的变量
let grabbedImg1 = '';
let grabbedImg2 = '';
let grabbedImg3 = '';
然后根据 id 将其全部设置为等于 JSON 文件中的相应 img 标签。
与正在打印的页面
<Item name={grabbedName} date={grabbedDate} lang={grabbedLang} detail={grabbedDetails} img1={grabbedImg1} img2={grabbedImg2} img3={grabbedImg3} />
我几乎肯定值本身已在构造函数中成功设置,因为我可以在警报或页面上的 p 标记中正确打印它们。 img src 出于某种原因不会接受它。
import React from 'react';
import ReactDOM from 'react-dom';
import Jumbotron from 'react-bootstrap/Jumbotron'
import 'bootstrap/dist/css/bootstrap.css';
import Carousel from 'react-bootstrap/Carousel';
import './Item.css';
export class Item extends React.Component {
constructor({name , date, lang, detail, img1, img2, img3})
{
super();
this.name = name;
this.date = date;
this.lang = lang;
this.detail = detail;
this.img1 = img1;
this.img2 = img2;
this.img3 =img3;
}
render(){
return (
<div>
<Carousel>
<Carousel.Item interval={4000}>
<img
className="d-block w-100"
src={this.img1}
alt="First slide"
/>
</Carousel.Item>
<Carousel.Item interval={4000}>
<img
className="d-block w-100"
src={this.img2}
alt="Second slide"
/>
</Carousel.Item>
<Carousel.Item interval={4000}>
<img
className="d-block w-100"
src={this.img3}
alt="Third slide"
/>
</Carousel.Item>
</Carousel>
<Jumbotron>
<h1>{this.name}</h1>
<h6>Created: {this.date} using {this.lang}</h6>
<p>{this.detail}</p>
</Jumbotron>
</div>
);
}
}
export default Item;
【问题讨论】:
-
需要查看JSON文件才能确定。您的 src 可能不正确。
-
您确定这些 img 值是纯字符串吗?
-
可能是你的相对路径搞错了。尝试传入一个绝对路径,因为这看起来应该可以工作。
标签: javascript json reactjs