防止React卸载组件

时间:2020-04-04 19:01:16

标签: reactjs performance warnings

此警告出现性能问题:

警告:无法在已卸载的组件上执行React状态更新。 这是空操作,但它表明应用程序中发生内存泄漏。 要解决此问题,请取消所有订阅和异步任务 componentWillUnmount方法。

当我尝试登录时,我已连接但未重定向到管理页面,因此我必须重新插入凭据,才能进入管理页面。 这是Login组件的代码:

ggplot(data = temps, aes(x = Temperature, y = "Proportions")) +
  geom_point(aes(y = Carbohydrates),colour = "darkred", 
             fill = "darkred", shape = temps$Shape, size = 3) +
  geom_line(aes(y = Carbohydrates))

我尝试与_isMounted一起使用,以便可以解决此问题,但是它不起作用!

1 个答案:

答案 0 :(得分:1)

在我看来,您的第二个setState可能是导致此问题的原因:

if (this._isMounted) {
    this.setState({
        redirectToReferrer: true
    })
    localStorage.setItem("tokens", JSON.stringify(response.data.token))
    // try removing this second set state and see if it solves the issue
    // this.setState({
    //    redirectToReferrer: true
    // })
    console.log(localStorage.getItem('tokens'))
}

看起来第一个setState导致了重定向和卸载,因此,在调用第二个setState时,该组件已经被卸载-从而导致错误。

还不清楚为什么首先需要同时使用这两个setState,因为它们都进行相同的更改。