代码在if语句React-Native AsyncStorage内部运行多次

时间:2019-05-28 22:20:55

标签: react-native storage asyncstorage

当手机未连接到互联网时,我正在尝试将一些数据保存到异步存储中。重新联机后,我将使用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();
        }
    })
}

0 个答案:

没有答案