Javascript 在异步存储中持久化API数据
我想在没有internet连接的情况下重新打开React本机应用程序时保留获取的API数据(数组) 使用Axios获取和存储状态为的数据和Javascript 在异步存储中持久化API数据,javascript,react-native,Javascript,React Native,我想在没有internet连接的情况下重新打开React本机应用程序时保留获取的API数据(数组) 使用Axios获取和存储状态为的数据和AsyncStorage工作正常 当在没有互联网连接的情况下打开应用程序时,有一个无休止的加载时间,我不知道如何触发捕获承诺并使用我存储的数据作为状态的新数据 这是我的代码: componentWillMount(){ axios.get('http://example.com/api_get_request') .then
AsyncStorage
工作正常
当在没有互联网连接的情况下打开应用程序时,有一个无休止的加载时间,我不知道如何触发捕获承诺并使用我存储的数据作为状态的新数据
这是我的代码:
componentWillMount(){
axios.get('http://example.com/api_get_request')
.then((response) => {
console.log('connection ok!');
AsyncStorage.setItem('landen', JSON.stringify(response.data));
this.setState({
landen: response.data,
loading: false,
});
//DATA SET TO STATE + ASYNCSTORAGE
})
.catch(error => {
console.log(error.response);
AsyncStorage.getItem('landen').then((value) => {
this.setState({
landen: JSON.parse(value),
loading: false,
});
//NO CONNECTION -> ASYNC DATA
});
});
}
您可以使用来检查internet连接,并根据连接执行如下代码
componentWillMount() {
NetInfo.isConnected.fetch().then(isConnected => {
if (isConnected) {
axios.get('http://example.com/api_get_request')
.then((response) => {
AsyncStorage.setItem('landen', JSON.stringify(response.data));
this.setState({
landen: response.data,
loading: false,
});
})
} else {
AsyncStorage.getItem('landen').then((value) => {
this.setState({
landen: JSON.parse(value),
loading: false,
});
});
}
});
}
请注意,上面的代码没有经过测试,您可能需要在这里和那里修复一些东西,但您将得到这个概念。另外,您可能需要添加
catch
块来捕获意外错误。对于管理一些小信息,使用异步存储是一个好主意。但如果您需要管理所有应用程序状态,将代码传递给Redux并使用以下库是一个很好的做法: