我已经创建了其中包含数组、文本和图像的对象,我希望通过它进行映射以呈现新组件,是否可以像这样通过图像进行映射?因为当我通过 props 传递新组件时,我的新组件没有检测到任何图片,并且不知道我是否做错了什么,或者那样做是不可能的。
import firstProjectPhoto from '../img/picOne.png';
import secondProjectPhoto from '../img/picTwo.png';
import thirdProjectPhoto from '../img/picThree.png';
import ListOfProjects from "./subcomponents/ListOfProjects";
const projects = [{
photo:[{firstProjectPhoto},{secondProjectPhoto},{thirdProjectPhoto}],
},
{
text:["Project number one", "Project number two", "Project number 3"],
}];
class Projects extends Component {
render() {
return (
<Grid className="text-center" id="listOfProjects">
<PageHeader className="projects-header">My Projects</PageHeader>
{projects.map(e =>
<ListOfProjects
photo={e.photo}
text={e.text}
/>
)}
</Grid>
);
}
}
export default Projects;
新组件
class ListOfProjects extends Component {
render() {
return (
<Row className="show-grid text-center projects-list">
<Col xs={1} sm={1} className="projects">
<Image src={this.props.photo} thumbnail responsive/>
<p>{this.props.text}</p>
</Col>
</Row>
);
}
}
export default ListOfProjects;
更新:
实际上有一些进展,谢谢你们:)问题出在 const 项目的结构中,但是它仍然将 img src 显示为 [object Object] 而不是正常图片
const projects = [{
photo: {firstProjectPhoto},
text:"first project"
},
{
photo: {secondProjectPhoto},
text:"second project"
},
{
photo: {thirdProjectPhoto},
text:"third project"
}
]
<Grid className="text-center" id="listOfProjects">
<PageHeader className="projects-header">
My Projects </PageHeader>
{projects.map((e,i) =>
<ListOfProjects
photo={e.photo}
text={e.text}
key={i}
/>
)}
</Grid>
更新
我应该没有 {} 现在工作得很好:) 谢谢大家的帮助
原文由 Zirek 发布,翻译遵循 CC BY-SA 4.0 许可协议
projects
对象的结构不是您所期望的。你要但是你有
您还忘记了将
key
添加到循环中呈现的每个项目: