我是React的新手,我按照一个教程学习,但遇到错误,但无法弄清楚。我正在尝试从API获取一些数据,以将其显示在我的项目中。
这是我的代码:
import React, { Component } from 'react';
import PhotoList from './PhotoList';
class App extends Component {
constructor() {
super();
this.state = {
photos: []
}
}
componentWillMount() {
fetch('https://jsonplaceholder.typicode.com/photos')
.then((response) => {return response.json()})
.then((photos) => {this.setState({ photos: photos })})
}
render() {
if (this.state.photos.length > 0) {
return (
<div className="container-fluid">
<PhotoList listado={this.state.photos} />
</div>
)
} else {
return <span>Esperando photos</span>
}
}
}
export default App;
import React from 'react';
import Photo from './Photo';
const PhotoList = ({ Photos }) => {
return (
<div>
{
Photos.map((Photos, i) => {
return (
<div>
key={i}
id={Photos[i].id}
title={Photos[i].title}
url={Photos[i].url}
</div>
);
})
}
</div>
);
}
export default PhotoList;
我收到此错误:
非常感谢您
答案 0 :(得分:3)
有几点要指出。
PhotoList
的道具名称不匹配。在App
内,您可以使用listado
属性将照片传递到PhotoList。
<PhotoList listado={this.state.photos} />
但是您正在尝试检索不存在的Photos
属性。
const PhotoList = ({ Photos }) => {
因此您应该将属性名称更改为Photos
(首选小写)
<PhotoList Photos={this.state.photos} />
或更改PhotoList
的声明
const PhotoList = ({ listado }) => {
Photos.map((Photos, i) => {
应该是
Photos.map((photo, i) => {
或Photos
以外的任何其他ID。
.map
中的元素而不是
Photos.map((Photos, i) => {
return (
<div>
key={i}
id={Photos[i].id}
title={Photos[i].title}
url={Photos[i].url}
</div>
);
})
您应该
photos.map((photo, i) => {
return (
<div>
<p>key={i}</p>
<p>id={photo.id}</p>
<p>title={photo.title}</p>
<p>url={photo.url}</p>
</div>
);
})
您会看到photo
是一个单独的照片对象,因此无需使用Photos[i]
对其进行访问。