React Native IOS App 在没有网络连接时崩溃
Posted
技术标签:
【中文标题】React Native IOS App 在没有网络连接时崩溃【英文标题】:React Native IOS App crashes when no network conection 【发布时间】:2016-05-20 05:54:27 【问题描述】:在模拟器上它不会崩溃并警告错误,但在生产中它会在假设发出获取请求后立即崩溃,并且在网络连接恢复之前无法重新打开应用程序(我打开/关闭飞机测试模式)
这是我的代码的 sn-ps
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】:我花了很多时间试图找到一种在使用 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);
【讨论】:
以上是关于React Native IOS App 在没有网络连接时崩溃的主要内容,如果未能解决你的问题,请参考以下文章
React native init android,ios和app文件夹丢失
React Native 打开 iOS App Notifications 设置
Expo react-native app with firebase phone authentication在web上工作,在ios模拟器上出错,在Android上崩溃而没有警告