web-dev-qa-db-fra.com

React Native - Comment voir ce qui est stocké dans AsyncStorage?

J'enregistre des éléments dans AsyncStorage dans React Native et j'utilise le débogueur Chrome et le simulateur iOS.

Sans réagir nativement, en utilisant le développement Web régulier localStorage, j’ai pu voir les éléments localStorage stockés sous Chrome Debugger > Resources > Local Storage

Toute idée de comment visualiser les éléments stockés dans React Native AsyncStorage?

21
Wonka

Vous pouvez utiliser reactotron, je pense qu’il contient Async Storage Explorer;) https://github.com/infinitered/reactotron

 enter image description here

30
Fareed Alnamrouti

Réagit le débogueur natif a cela intégré. 

Appelez simplement showAsyncStorageContentInDev() dans la console RND et vous pourrez voir une sauvegarde du stockage de votre application.

21
Jayden

Avec bluebird vous pouvez faire ceci:

const dumpRaw = () => {
  return AsyncStorage.getAllKeys().then(keys => {
    return Promise.reduce(keys, (result, key) => {
      return AsyncStorage.getItem(key).then(value => {
        result[key] = value;
        return result;
      });
    }, {});
  });
};

dumpRaw().then(data => console.log(data));
2
Tim Scott

Suivre devrait fonctionner,

AsyncStorage.getAllKeys((err, keys) => {
  AsyncStorage.multiGet(keys, (error, stores) => {
    stores.map((result, i, store) => {
      console.log({ [store[i][0]]: store[i][1] });
      return true;
    });
  });
});
0
skantus

Reactotron ne me permettait pas d'imprimer de jolies impressions, mais il est aussi brutalement latent. J'ai donc écrit une fonction simple en utilisant lodash. Vous pouvez aussi utiliser un trait de soulignement.

En supposant que vous ayez un mapping statique de toutes vos clés ...

const keys = {
  key1: 'key1',
  key2: 'key2'
}

export function printLocalStorage() {
  _.forEach(keys, (k, v) => {
    localStore.getAllDataForKey(v).then(tree => {
      console.log(k) // Logs key above the object
      console.log(tree) // Logs a pretty printed JSON object
    })
  })
}

Ce n'est pas performant mais ça résout le problème.

0
Phil Andrews