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

时间:2019-02-06 10:24:48

标签: react-native memory-leaks react-native-ios asyncstorage

每当执行任何功能(例如扫描Qr代码和存储数据)时,我都使用componentDidUpdate()方法在屏幕上显示更新的数据。但是在网上搜索之后,我发现在componentDidUpdate()中调用this.setState会创建无限循环。我试图通过在上述方法中包含prevState来解决此问题,但失败了。下面是我的代码,以获取更多详细信息。没有componentDidUpdate()的帮助,如何更新来自Asyncstorage的状态?

SELECT SUM(value)...

任何帮助或建议都会有所帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

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

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) {
    }
  }
}