首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ComponentDidUpdate()导致IOS中的内存泄漏和电池耗尽

ComponentDidUpdate()导致IOS中的内存泄漏和电池耗尽
EN

Stack Overflow用户
提问于 2019-02-06 18:24:48
回答 1查看 438关注 0票数 0

我使用componentDidUpdate()方法在屏幕上显示更新的数据,无论何时执行任何功能,如扫描二维码和存储数据。但是在网上搜索后,我发现在componentDidUpdate()中调用this.setState会产生无限循环。我试图通过在上面的方法中包含prevState来解决这个问题,但是我失败了。下面是我的代码,了解更多细节。如何在没有componentDidUpdate()帮助的情况下更新来自异步存储的状态?

代码语言:javascript
复制
componentDidUpdate() {
    try {
      AsyncStorage.getItem('Data').then((value) => {
        this.setState({
          list: JSON.parse(value)
        })
      })
    } catch (err) {
    }
  }

任何帮助或建议都将是有益的,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-02-06 18:29:54

更新componentDidUpdate中的状态将触发另一个componentDidUpdate调用,因此您应该限制调用setState()。例如:

代码语言:javascript
复制
componentDidUpdate(prevProps, prevState) {

  // Only update state if list is empty 
  if (prevState.list.length === 0) {

    try {
      AsyncStorage.getItem('Data').then((value) => {
        this.setState({
          list: JSON.parse(value)
        })
      })
    } catch (err) {
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54551302

复制
相关文章

相似问题

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