NetInfo状态更新错误

时间:2018-01-22 17:49:59

标签: reactjs react-native components

在iOs模拟器中运行我发现了错误

ExceptionsManager.js:73警告:只能更新已安装或安装的组件。这通常意味着您在已卸载的组件上调用了setState,replaceState或forceUpdate。这是一个无操作。

这样做。

constructor(props) {
  super(props);
  this.state = {
    isOnline: false
  }
}

componentDidMount(){
  NetInfo.isConnected.addEventListener('connectionChange', this.checkConnection);
}

componentWillUpdate(){
  NetInfo.removeEventListener('connectionChange', this.checkConnection);
}

checkConnection = () => {
  NetInfo.isConnected.fetch().then((data) => {
  console.log('refresh:', data);
    this.setState({
      isOnline: data <------ this is the line that affect me 
    })
  }); 
}

任何想法为什么?

1 个答案:

答案 0 :(得分:0)

如ZeroBased_IX所述:

执行此操作:

componentWillUnmount(){
  NetInfo.isConnected.removeEventListener('connectionChange');
}

在该行中触发,因为这是您将更新后的值用于其余代码库的行。因此在捆绑包编译时将其破坏。

希望这很有帮助!