【发布时间】:2017-09-19 20:12:04
【问题描述】:
我正在尝试映射对象数组。
我的json中staff中的每个数组元素都有一个imgUrl:
{
"home": {
...
"staff": [
{
...
"imgUrl": "../Images/Jon.JPG",
...
},
...
],
...
}
...
}
这是带入我的主要App.js 文件的
import data from './data.json';
并传递给一个组件:
<Home data={data.home} />
在家里我有:
let staff = this.props.data.staff.map((member, i) => {
return (
<Staff imgUrl={member.imgUrl} />
);
然后在Staff 我正在尝试加载图像:
<img src={this.props.imgUrl} alt={this.props.name} />
但是这不起作用,alt 会显示出来。我检查了正确的字符串是否传递给了 src 并且它是,但图像仍然没有加载。
如果我用存储在 json 中的实际路径替换 {this.props.imgUrl},图像将加载。我已经在这个问题上搜索了几个小时,但无法到达任何地方,也无法实施其他人用于解决类似问题的解决方案。
我使用 create-react-app 来启动这个项目。
编辑:好吧,我一直很愚蠢,我前段时间复制了图像文件夹(在 src 中,移动到公共),但是用我的路径访问了 src 中的那个。从那以后,我将其更改为公开的,一切正常。谢谢大家的帮助。
【问题讨论】:
-
在获取 url 时尝试使用
console.log,可能发生了某些事情,img 无法正确获取属性 -
检查您的浏览器控制台。您的代码可能正在运行,但由于其他原因无法加载图像。
-
尝试将
member.imgUrl替换为this.imgUrl -
我不是 100% 确定我已经完成了你的要求,但我只是在 img 元素之前和之后添加了一个 {console.log(this.props.imgUrl)} 并且它返回了正确的字符串。
-
@Sergey 我在 Staff 中使用了 console.log() 来检查,字符串使用 member.imgUrl 可以正常工作,但是使用 this.imgUrl 我得到 'undefined'
标签: javascript json reactjs