首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在React中对外部数据进行循环后无法正确执行setState

在React中对外部数据进行循环后无法正确执行setState
EN

Stack Overflow用户
提问于 2018-07-16 01:53:46
回答 1查看 79关注 0票数 0

我正在尝试从外部文件中提取数据,并通过props将项目填充到组件中。为此,我等待使用componentDidMount()生命周期方法完全挂载组件,然后使用map函数处理json数据,并最终设置状态。

代码语言:javascript
复制
class ItemComponent extends Component {

  constructor(props) {
    super(props);

    this.state = {
      data: data,
      sections: null
    }
  }

  getItemSections = () => {

    let s = [];

    // Properly logs external data
    console.log(this.state.data);

    s.push(this.state.data.map((section) => {
      return {"slug": section.slug, "name": section.name}
    }));

    // Properly logs processed data.
    console.log(s[0]);

    this.setState({sections: s});

    // Logs `null`.
    console.log(this.state.sections);

  }

  componentDidMount()
  {
    this.getItemSections();
  }

问题是我不能用来自外部源的新计算的数据设置状态,无论如何都不能正确地设置状态,奇怪的是内容被正确地记录在其他任何地方。我做错了什么?

EN

Stack Overflow用户

发布于 2018-07-16 02:00:34

setState()函数不会立即改变this.state,但会创建一个挂起的状态转换。参考Here

如果您想要等待状态更改发生,然后使用状态:

代码语言:javascript
复制
this.setState({variable: <yourvalue> }, function () {
    console.log(this.state);
});
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51350759

复制
相关文章

相似问题

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