当手机未连接到互联网时,我正在尝试将一些数据保存到异步存储中。重新联机后,我将使用getData()检索这些数据。
我在首页中列出了一些文档,然后选择其中一个时,它会导航到下一页并显示内容。然后,我将其填写到电子邮件中后,可以发送该文档。 所以问题在这里: 第一次只检索一次,但是当我尝试返回到正在显示的文档列表并选择其中一个文档时,我尝试在脱机时发送,然后在联机时发送两次。而且,我回去尝试填写新文档的次数很多,它将与我发送电子邮件的次数相等。
这是我的代码...
存储数据:
storeData = async (data) => {
try {
await AsyncStorage.setItem('key', JSON.stringify(data));
} catch (e) {
console.log("Some error happened", e);
}
}
重新上线后检索:
> getData = async () => {
>
> try {
> const value = await AsyncStorage.getItem('key')
>
> let valueParsed = JSON.parse(value);
>
>
> if (value != null) {
> fetch(this.state.url, {
> method: 'POST',
> headers: {
> Accept: 'application/json',
> 'Content-Type': 'application/json',
> 'Connection': 'Keep-Alive',
> },
> credentials: 'include',
> body: JSON.stringify(valueParsed)
> })
> await AsyncStorage.clear();
> }
> } catch (e) {
> // error reading value
> }
> }
和componentDidMount():
componentDidMount() { //checking if there is internet connection
NetInfo.isConnected.addEventListener('connectionChange', (isConnected) => {
if (isConnected) {
this.getData();
}
})
}