是否可以从 AsyncStorage 中删除所有项目

Is it possible to remove all items from AsyncStorage

我正在测试我的 React-Native 应用程序并希望从 AsyncStorage 中删除所有项目以便从头开始测试该应用程序。我有点困惑。

我阅读了官方文档并找到了 multiRemoveclear 函数,但我无法理解如何清除我的应用程序的所有项目(clear 据我所知清除所有应用程序的全部存储,我不敢使用它), multiRemove 只删除我在参数中给它的键,但我想清除 所有 个键。

我想我可以通过 getAllKeys keys-values 并逐个删除它,但也许有更清晰的方法来做到这一点? :)

谢谢

P.S:我试着喜欢这个:

clearAllData() {
    AsyncStorage.multiRemove([]).then(() => alert('success'));
}

但是没用...

I suppose I can do it through getAllKeys keys-values and remove it one-by-one, but maybe there is a more clear way to do it? :)

您应该这样做,这是从您的应用程序中删除所有密钥的唯一方法。

这是一个简单的方法:

clearAllData() {
    AsyncStorage.getAllKeys()
        .then(keys => AsyncStorage.multiRemove(keys))
        .then(() => alert('success'));
}
removeFew = async () => {
  const keys = ['@MyApp_USER_1', '@MyApp_USER_2']
  try {
    await AsyncStorage.multiRemove(keys)
  } catch(e) {
    // remove error
  }
  console.log('Done')
}

这里有一种方法,使用 async/await:

const keys = await AsyncStorage.getAllKeys()
await AsyncStorage.multiRemove(keys)

当您的应用程序运行时,它会被分配一个唯一的 ID。每个存储的密钥都以 ID 为前缀。因此,您的应用程序的所有密钥都可以被识别。

使用 AsyncStorage.clear 不会使用唯一标识符,并且会删除所有客户端、应用程序和库的密钥。这在开发中可能没问题,但在生产中可能不受欢迎。

Per @Bruno Soares,首选 multiRemove。但是,请注意 'await' 只能在异步函数中使用。将 Bruno 的回答与@Prawesh Panthi 相结合,以下函数将删除仅与您的应用关联的键,而无需明确标识键。

removeAppKeys = async () => {
  let keys = []
  try {
    keys = await AsyncStorage.getAllKeys()
    console.log(`Keys: ${keys}`) // Just to see what's going on
    await AsyncStorage.multiRemove(keys)
  } catch(e) {
   console.log(e)
  }
  console.log('Done')
}