我正在测试我的React-Native应用程序,并希望从AsyncStorage中删除所有项目,以便从头开始测试该应用程序。我有些困惑。
我阅读了官方文档,发现了multiRemove
和clear
函数,但是我不明白如何清除应用程序的所有项目(据我了解,clear
会清除整个存储空间所有应用程序中,我恐怕会使用它),
和multiRemove
仅删除我在参数中提供的键,但是我想清除所有键。
我想我可以通过getAllKeys
键值来做到这一点,并将其一一删除,但是也许有更清晰的方法吗? :)
谢谢
P.S:我试图喜欢这个:
clearAllData() {
AsyncStorage.multiRemove([]).then(() => alert('success'));
}
但这不起作用...
答案 0 :(得分:2)
我想我可以通过getAllKeys键值将其做到并逐一删除,但是也许有更清晰的方法吗? :)
您应该这样做,这是从应用程序中删除所有键的唯一方法。
这是一种简单的方法:
clearAllData() {
AsyncStorage.getAllKeys()
.then(keys => AsyncStorage.multiRemove(keys))
.then(() => alert('success'));
}
答案 1 :(得分:0)
removeFew = async () => {
const keys = ['@MyApp_USER_1', '@MyApp_USER_2']
try {
await AsyncStorage.multiRemove(keys)
} catch(e) {
// remove error
}
console.log('Done')
}
答案 2 :(得分:0)
这里有一种使用async / await的方法:
GetHashCode
答案 3 :(得分:0)
当您的应用运行时,它会被分配一个唯一 ID。每个存储的密钥都以 ID 为前缀。因此,您可以识别所有应用的密钥。
使用 AsyncStorage.clear 不会使用唯一标识符,并且会删除所有客户端、应用程序和库的密钥。这在开发中可能没问题,但在生产中可能不受欢迎。
根据@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')
}