Для прослушивания конкретных событий вам необходимо иметь прослушиватели и активировать обратный вызов в случае, если кто-либо из этих слушателей выстрелил.
Например, у меня есть слушатель из-за отсутствия подключения к Интернету с использованием NetInfo
, а также при открытии/закрытии приложения с использованием AppStateIOS
. Моя getInitialState
функция устанавливает два свойства:
getInitialState: function() {
return {
currentState: AppStateIOS.currentState,
isConnected: null
}
},
Тогда у меня есть некоторые слушатели и обработчики:
componentWillMount: function() {
NetInfo.isConnected.fetch().done(
(isConnected) => { this.setState({isConnected}); }
);
},
componentDidMount: function() {
AppStateIOS.addEventListener('change', this.handleAppStateChange);
NetInfo.isConnected.addEventListener('change', this.handleConnectivityChange);
},
componentWillUnmount: function() {
AppStateIOS.removeEventListener('change', this.handleAppStateChange);
NetInfo.isConnected.removeEventListener('change', this.handleConnectivityChange);
},
handleAppStateChange: function(state) {
this.setState({
currentState: state
});
},
handleConnectivityChange: function(connection) {
this.setState({
isConnected: connection
})
},
Мой render
метод зависит от моего состояния:
render: function() {
if (!this.state.isConnected) {
return (
this.renderLoading()
)
}
return (
<View style={styles.container}>
<WebView url={this.props.url} />
</View>
)
},
Я заметил, что 'NetInfo.isConnected.fetch(). Done()' всегда возвращает true, даже когда я отключу Wi-Fi и активирую режим полета. Есть идеи? – jamesfzhang