React Native - 如何查看AsyncStorage中存储的内容?

时间:2016-07-25 14:16:26

标签: react-native asyncstorage

我在React Native中将一些项目保存到AsyncStorage,我正在使用chrome调试器和iOS模拟器。

如果没有原生反应,使用常规网络开发localStorage,我就可以在localStorage

下看到存储的Chrome Debugger > Resources > Local Storage

任何想法如何查看React Native AsyncStorage存储的项目?

8 个答案:

答案 0 :(得分:31)

你可以使用reactotron我认为它有Async Storage资源管理器;) https://github.com/infinitered/reactotron

enter image description here

答案 1 :(得分:27)

React Native Debugger内置了此内容。

只需在RND控制台中调用showAsyncStorageContentInDev(),您就可以看到应用存储空间的转储。

答案 2 :(得分:3)

我创建了一个帮助程序方法来将所有存储记录在单个对象中(例如,在Reactotron中更干净地记录日志):

import AsyncStorage from '@react-native-community/async-storage';

export function logCurrentStorage() {
  AsyncStorage.getAllKeys().then((keyArray) => {
    AsyncStorage.multiGet(keyArray).then((keyValArray) => {
      let myStorage: any = {};
      for (let keyVal of keyValArray) {
        myStorage[keyVal[0]] = keyVal[1]
      }

      console.log('CURRENT STORAGE: ', myStorage);
    })
  });
}

答案 3 :(得分:2)

使用bluebird,您可以执行此操作:

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));

答案 4 :(得分:1)

以下应该有效,

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

答案 5 :(得分:1)

也许晚了,但是这些解决方案都不适合我。 在Android上,使用Android Studio打开文件资源管理器,然后转到 data / data / your_package_name 在内部,应该有一个名为 database 的文件夹,在内部的文件是 RKStorage

此文件是SQLite3文件,因此请获取您喜欢的SQLite资源管理器并进行探索。如果您想要一个,那么这个就可以了:DB Browser for SQLite

答案 6 :(得分:0)

我没有发现Reactotron启用了任何类型的漂亮打印,而且它也是残酷的潜伏所以我只是使用lodash编写了一个简单的函数。你也可以使用下划线。

假设您有所有密钥的静态映射......

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
    })
  })
}

它没有表现,但它解决了这个问题。

答案 7 :(得分:0)

您可以定义函数以使用异步和等待来获取所有键

    getAllkeys = () => {
    return new Promise( async (resolve, reject) => {
    try {
      let keys = await AsyncStorage.getAllKeys();
      let items = await AsyncStorage.multiGet(keys)
      resolve(items)
    } catch (error) {
      reject(new Error('Error getting items from AsyncStorage: ' + error.message))
    }
  });
}


    somefunc = async () => {
    try {
    var items = await getAllkeys();
    var someItems = items.filter(function (result, i, item) {
          // do filtering stuff
          return item;
    });
    // do something with filtered items 
    } catch (error) {
    // do something with your error
    }
}