首页 > 解决方案 > 注销时如何在 React Native 中删除异步存储中每个键的值

问题描述

我正在使用asyncReact Native 中的存储来存储从服务器获取的响应。现在我想在注销时删除每个键的值。但是方法removeItem无法做到这一点,这是我的代码...

logout = ()=>{

   const {id , storedValue ,storedType,profileImg,type } = this.state;
   console.log("here" , id);
    axios.post('api/v1/user/do_logout', {
      user_id: id,

        })
        .then( async (response) => {
          if(response.data.type == "success"){
             alert("Logout Successfully");
             await AsyncStorage.removeItem(storedValue);
             await AsyncStorage.removeItem(storedType);
             await AsyncStorage.removeItem(profileImg);
             await AsyncStorage.removeItem(type);
             await AsyncStorage.removeItem(id);

            console.log(storedValue , storedType , profileImg , type ,id );
            this.props.navigation.navigate("LoginScreen");

          }else if(response.data.type == "error"){
            // console.log(self.id);
            alert("Incorrect Detail");
          }
      })
        .catch((error) => {
          console.log(error);
        });
  }

在上面的代码中,我试图删除每个键的值,但它不起作用。好心的帮助

标签: reactjsreact-nativeasyncstorage

解决方案


我正在尝试删除每个键的值,但它不起作用。

您可能会认为,因为您调用console.log(storedValue , storedType , profileImg , type ,id );它不是清除,但可能是清除,您正在显示组件的状态,而不是AsyncStorage.

如果不是这种情况,请更好地解释您的意思but it is not working

一次删除所有内容的一种方法是使用AsyncStorage.multiRemove.

await AsyncStorage.multiRemove([storedValue, storedType, profileImg, type, id])

您应该注意到 , storedValue, storedType, profileImg,type需要idkey您使用的那个,AsyncStorage.setItem(key, value)而不是value.

您还可以使用getAllKeys和从您的应用程序中删除所有存储的密钥multiRemove

AsyncStorage.getAllKeys()
    .then(keys => AsyncStorage.multiRemove(keys))
    .then(() => alert('All Keys removed'));

推荐阅读