2016-12-28 75 views
0

%的阵营本地文档,我已经设置了一个事件侦听器来检测网络状态的变化:的JavaScript /阵营原住民 - 事件监听器只触发第一次

componentDidMount() { 
    NetInfo.addEventListener(
     'change', 
     this._handleConnectionInfoChange 
    ); 

    NetInfo.fetch().done(
     (connectionInfo) => { this.setState({connectionInfo}); } 
    ); 
} 

componentWillUnmount() { 
    NetInfo.removeEventListener(
    'change', 
    this._handleConnectionInfoChange 
); 
} 

_handleConnectionInfoChange = (connectionInfo) => { 
    this.setState({ 
     connectionInfo, 
    }); 
}; 

connectionInfo在一个单独的渲染方法,但除此之外,没有其他状态正在更改的实例。当这样设置时,我可以在关闭wifi时检测到第一个变化,并且状态设置为'无'。但是当我重新连接wifi时,状态不会改变,但保持“无”。

任何想法?

我已经尝试将this._handleConnectionInfoChange更改为this._handleConnectionInfoChange.bind(this));但这并未解决问题。

+0

listener在connectionInfo中收到'none'或者它没有被调用? – diedu

回答

0

你可以检查this._handleConnectionInfoChange是不是未定义。我不确定你是否可以在ES6 _handleConnectionInfoChange = (connectionInfo) =>{ } 这个类中声明这样的方法而不是_handleConnectionInfoChange(connectionInfo){ }

+0

当我console.log(this._handleConnectionInfoChange)它返回函数,所以我猜它不是未定义的。 –