我有两个文件(在同一个目录中):
Detail.json如下:
[
{
"id": 1,
"name": "A",
},
{
"id": 2,
"name": "B",
},
{
"id": 3,
"name": "C",
}
];
Base.js如下:
class Base extends Component {
state = { myDetail: [] };
//TODO 1: fetch JSON data from Detail.json and set it to myDetail object
//TODO 2: parse this data from myDetail to display as a single unit (eg: name)
}
我做到了:
import data from './Detail.json'
console.log(data)
给了我完整的json对象。但当我这么做的时候:
this.setState({myDetail: data});
& then console.log(myDetail);
它在控制台中显示空对象。
有没有人可以告诉我如何执行上述两项任务。谢谢。
发布于 2017-09-02 02:52:48
正如Yozi在评论部分所说的那样,setState
是一个异步函数,你必须等待它的承诺得到解决。
this.setState({foo: 'bar'}).then(() => {
console.log(this.state.foo)
});
发布于 2018-08-14 04:12:36
这只是因为在setState
方法更新状态对象之前调用了最后一段代码console.log
。但是setState
接受第二个参数,这个参数是状态更新后调用的回调。
this.setState({
myDetails: data
}, () => {
console.log(this.state.myDetails);
});
https://stackoverflow.com/questions/46004782
复制相似问题