没有网络连接时,React Native IOS App崩溃

时间:2016-05-20 05:54:27

标签: ios iphone react-native

在模拟器上它不会崩溃并警告错误,但是在生产中,一旦获取请求就会崩溃,并且在网络连接恢复之前无法重新打开应用程序(我打开/关闭飞机)测试模式)

这是我的代码的片段

  componentWillMount: function(){
    NetInfo.isConnected.addEventListener('change',this.handleConnectivityChange)
    NetInfo.isConnected.fetch().done((data) => {

    this.setState({
      isConnected: data
    })
    console.log('this.state.isConnected: ', this.state.isConnected);
  })
 },

handleConnectivityChange: function(){
  var connected = this.state.isConnected ? false : true
  this.setState({isConnected: connected})
  console.log('this.state.isConnected11: ', this.state.isConnected);
},

....

goToList: function(replace, listview){
  console.log('this.state.isConnected: ', this.props.isConnected);
  if (!this.props.isConnected){
    AlertIOS.alert('Error', 'Please check your network connectivity')
    this.props.removeFetching()
    return
  }
 ....
 fetch(url)
  .then((response) => response.json())
  .then((responseData) => {
 ....
  .catch((error) => {
  StatusBarIOS.setNetworkActivityIndicatorVisible(false)
  AlertIOS.alert('Error', 'Please check your network connectivity')
  this.props.removeFetching()
 })
.done()

1 个答案:

答案 0 :(得分:0)

我花了很多时间试图找到一种方法来捕获异常时使用fetch(),但我无法让它工作(例如使用.catch()或try / catch博客不起作用)。使用XMLHttpRequest和try / catch博客而不是fetch()的工作是什么。以下是我基于https://facebook.github.io/react-native/docs/network.html#using-other-networking-libraries

的示例
var request = new XMLHttpRequest();
request.onreadystatechange = (e) => {
  if (request.readyState !== 4) {
    return;
  }

  if (request.status === 200) {
    console.log('success', request.responseText);
    var responseJson = JSON.parse(request.responseText);
    // *use responseJson here*
  } else {
    console.warn('error');
  }
};
try {
  request.open('GET', 'https://www.example.org/api/something');
  request.send();
} catch (error) {
  console.error(error);
}