web-dev-qa-db-fra.com

Comment vérifier si une clé existe dans AsyncStorage dans React Native? getItem () retourne toujours un objet de promesse

J'essaie de vérifier si une clé est disponible dans AsyncStorage avec AsyncStorage.getItem('key_name'). Si la clé n'est pas disponible, elle ne renvoie pas la valeur null, elle renvoie néanmoins l'objet de promesse suivant:

Promise
_45:0
_54:null
_65:null
_81:1

Ma fonction pour obtenir des données est la suivante: 

checkItemExists(){
    let context = this;
    try {
        let value = AsyncStorage.getItem('item_key');
        if (value != null){
            // do something 
        }
        else {
            // do something else
        }
    } catch (error) {
    // Error retrieving data
    }
}

Comment puis-je vérifier si une clé existe dans AsyncStorage ou pas?

10
Mostafiz Rahman
async checkUserSignedIn(){
    let context = this;
    try {
       let value = await AsyncStorage.getItem('user');
       if (value != null){
          // do something 
       }
       else {
          // do something else
      }
    } catch (error) {
      // Error retrieving data
    }
}
8
Sagar Khatri

Comme son nom l'indique, c'est asynchrone. Donc vous devez:

AsyncStorage.getItem('user')
.then((item) => {
     if (item) {
       // do the damage
     }
});

Si nécessaire, vous pouvez jouer avec l'état local ou une bibliothèque de gestion d'état d'applications.

6
zvona

AsyncStorage est async ... vous devez donc l'appeler comme suit:

checkUserSignedIn(callback){
  AsyncStorage.getItem('user', (err, result) => {
    if (!err && result != null){
        // do something 
    }
    else {
        // do something else
    }
    callback(result);
  });
}
2
UXDart