React Native NetInfo addEventListener从一开始就触发

时间:2018-04-08 16:37:45

标签: react-native

我想在离线/在线时启动我的事件监听器并且我已经启动了我的应用程序,然后当我上线/离线时,我的事件应该在使用该应用程序时触发。

但是,当我的应用初始化时会触发。

class App extends Component {
    handleFirstConnectivityChange(isConnected) {
        console.log('Then, is ' + (isConnected ? 'online' : 'offline'));
        NetInfo.isConnected.removeEventListener(
            'connectionChange',
            this.handleFirstConnectivityChange
        );
    }
    componentDidMount(){
        NetInfo.isConnected.fetch().then(isConnected => {
            console.log('First, is ' + (isConnected ? 'online' : 'offline'));
        });

        NetInfo.isConnected.addEventListener(
            'connectionChange',
            this.handleFirstConnectivityChange
        );
    }
    render() {
        return (
            <MenuProvider>
                <RootNavigator />
                <PushController/>
            </MenuProvider>
        );
    }
};

2 个答案:

答案 0 :(得分:0)

处理程序函数中的

   handleFirstConnectivityChange(isConnected) {
        console.log('Then, is ' + (isConnected ? 'online' : 'offline'));
        NetInfo.isConnected.removeEventListener(
            'connectionChange',
            this.handleFirstConnectivityChange
        );
    }

你在第一次打电话时正在移除听众,所以它不再听了。无论你是第一次被调用,你是在线还是离线。

答案 1 :(得分:0)

NetInfo.isConnected.fetch().then((isConnected) => {
     console.log('First, is ' + (isConnected ? 'online' : 'offline'));

     NetInfo.isConnected.addEventListener(
      'connectionChange',
      this.handleFirstConnectivityChange
   );
});

  

的addEventListener

进入

  

NetInfo.isConnected.fetch()。然后

解决了这个问题。现在它只在使用应用程序时调用一次