首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >React Native -如何解析json数据并将其设置在状态对象中

React Native -如何解析json数据并将其设置在状态对象中
EN

Stack Overflow用户
提问于 2017-09-02 00:49:33
回答 2查看 4.2K关注 0票数 4

我有两个文件(在同一个目录中):

  • Detail.json
  • Base.js

Detail.json如下:

代码语言:javascript
复制
[
  {
    "id": 1,
    "name": "A",
  },
  {
    "id": 2,
    "name": "B",
  },
  {
    "id": 3,
    "name": "C",
  }
];

Base.js如下:

代码语言:javascript
复制
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)

}

我做到了:

代码语言:javascript
复制
import data from './Detail.json'

console.log(data)给了我完整的json对象。但当我这么做的时候:

代码语言:javascript
复制
this.setState({myDetail: data}); 

& then console.log(myDetail);它在控制台中显示空对象。

有没有人可以告诉我如何执行上述两项任务。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-09-02 02:52:48

正如Yozi在评论部分所说的那样,setState是一个异步函数,你必须等待它的承诺得到解决。

代码语言:javascript
复制
this.setState({foo: 'bar'}).then(() => {
  console.log(this.state.foo)
});
票数 1
EN

Stack Overflow用户

发布于 2018-08-14 04:12:36

这只是因为在setState方法更新状态对象之前调用了最后一段代码console.log。但是setState接受第二个参数,这个参数是状态更新后调用的回调。

代码语言:javascript
复制
this.setState({
     myDetails: data
}, () => {
     console.log(this.state.myDetails);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46004782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档