NetInfo 状态更新错误

Posted

技术标签:

【中文标题】NetInfo 状态更新错误【英文标题】:NetInfo status update error 【发布时间】:2018-07-01 10:20:33 【问题描述】:

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 
    )
  ); 

知道为什么吗?

【问题讨论】:

你不应该删除componentWillUnmount钩子中的事件监听器,而不是componentWillUpdate吗? 【参考方案1】:

ZeroBased_IX 提到:

改为这样做:

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

它在该行中触发,因为这是您在代码库的其余部分中使用更新值的行。因此在包编译时打破它。

希望对您有所帮助!

【讨论】:

以上是关于NetInfo 状态更新错误的主要内容,如果未能解决你的问题,请参考以下文章

反应本机的NetInfo在ios中不起作用

@IBDesignable 错误:无法更新自动布局状态

React & Redux,更新状态,错误:在调度之间检测到状态突变

从prop更新更新状态将导致循环错误

尝试在反应组件的返回中使用 setstate 更新状态并获得“最大更新深度超出错误”?

@IBDesignable错误:无法更新自动布局状态