anu icon indicating copy to clipboard operation
anu copied to clipboard

setInterval()中使用setState时好像存在内存泄漏问题

Open Neal-W opened this issue 5 years ago • 2 comments

default 是在anu-ie8-example中添加setInterval()测试结果,同样代码在原react.js不会出现内存增加问题。

Neal-W avatar Nov 21 '18 15:11 Neal-W

componentWIllUnmount中清理一下

RubyLouvre avatar Nov 22 '18 06:11 RubyLouvre

componentWIllUnmount中清理一下

在实际业务中我的页面一直存在的,是一个数据展示页,不会触发componentWIllUnmount这一步。

  net = () => {
    if (!this.aa) {
      this.aa = setInterval(() => {
        let a = this.state.time
        a += 1
        this.setState({
          time: a
        })
        clearInterval(this.aa)
        this.aa = null
        this.net()
      }, 1000);
    }
  }

  this.net()

我用这个简单例子跑在anu-ie8-example中的,发现setInterval重新setState后内存中的关于以前虚拟dom部分的并没有释放掉。目前我的解决方法是把泄露部分写入单独组件,将泄漏降到最低。希望能有更好的解决方法。

Neal-W avatar Nov 23 '18 02:11 Neal-W