无法执行React状态更新

时间:2019-09-23 07:56:52

标签: javascript react-native

我有这种错误:

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

我尝试遵循一些发现的建议,但尚未解决。我该怎么办?

class Starting extends Component {
  _isMounted = false
  constructor(props) {
    super(props);
    this.state = {
      loading: true,
    };
  }

  componentDidMount() {
  this._isMounted = true;
   User.getUserLoggato()
     .then(dataUserLoggato => {
        if (dataUserLoggato !== null) {
          global.user = new User(JSON.parse(dataUserLoggato));
          Actions.homepage({ utente: global.user });
        } else {
          Actions.login();
       }
      })
      .catch(err => {
        console.log(err);
      })
      .finally(() => {
        this.setState({ loading: false });
      }); 
  }

  componentWillUnmount() {
    this._isMounted = false;
  }


  render() {
    return (
      <View style={style.container}>
        <View style={style.page}>
        <ActivityIndicator size="large" color="#56cbbe" />
      </View>
      </View>
    );
  }
}

1 个答案:

答案 0 :(得分:3)

在设置状态之前检查组件是否已安装:

 .finally(() => {
    this._isMounted && this.setState({ loading: false });
  });