【发布时间】:2017-09-14 15:36:06
【问题描述】:
我正在尝试让 React 从 Django Rest Framework API 获取 JSON。链接写成http://127.0.0.1:8000/band/api/1/?format=json,结构如下:
{
id: 1,
name: "Muse",
date_added: "2017-04-17",
image: "https://upload.wikimedia.org/wikipedia/commons/a/a3/Muse_melbourne28012010.jpg",
bio: "Muse are an English rock band from Teignmouth, Devon, formed in 1994. The band consists of Matt Bellamy (lead vocals, guitar, piano, keyboards), Chris Wolstenholme (bass guitar, backing vocals, keyboards) and Dominic Howard (drums, percussion)."
}
我的反应是这样写的:
class ItemLister extends React.Component {
constructor() {
super();
this.state={items:[]};
}
componentDidMount(){
fetch(`http://127.0.0.1:8000/band/api/1/?format=json`)
.then(result=>result.json())
.then(items=>this.setState({items}))
setTimeout(() => console.log(this.state.items), 2000)
}
render() {
return(
<ul>
{this.state.items.length ?
this.state.items.map(item=><li key={item.id}>{item.name}</li>)
: <li>Loading...</li>
}
</ul>
)
}
}
ReactDOM.render(
<ItemLister />,
document.getElementById('container')
);
HTML 容器 div 停留在 loading...,控制台显示没有错误。我知道它与 JSON 有关,但无法弄清楚它是什么,感谢任何帮助!
编辑:
按照 m_callens 的建议添加以下内容后:
setTimeout(() => console.log(this.state.items), 2000)
控制台返回我确实想要获取的对象,但它仍然没有呈现在页面上。
Object {id: 1, name: "Muse", date_added: "2017-04-17", image: "https://upload.wikimedia.org/wikipedia/commons/a/a3/Muse_melbourne28012010.jpg", bio: "Muse are an English rock band from Teignmouth, Dev…eyboards) and Dominic Howard (drums, percussion)."}
【问题讨论】:
-
你真的得到数据了吗?尝试注销第二个中的项目。然后
-
@WilomGfx 我添加了,console.log(this.items) 在第二个 .then 下面,它说未定义。
-
那么你没有从 api 接收数据,确保它在服务器端工作。
-
尝试使用静态 .json 文件,如果可行,则说明您的 API 有问题
-
你做错了超时。做
setTimeout(() => console.log(this.state.items), 2000)
标签: javascript json django reactjs django-rest-framework