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
?
Vous pouvez utiliser reactotron, je pense qu’il contient Async Storage Explorer;) https://github.com/infinitered/reactotron
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.
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));
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;
});
});
});
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.