是否可以从 AsyncStorage 中删除所有项目
Is it possible to remove all items from AsyncStorage
我正在测试我的 React-Native 应用程序并希望从 AsyncStorage 中删除所有项目以便从头开始测试该应用程序。我有点困惑。
我阅读了官方文档并找到了 multiRemove
和 clear
函数,但我无法理解如何清除我的应用程序的所有项目(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')
}
我正在测试我的 React-Native 应用程序并希望从 AsyncStorage 中删除所有项目以便从头开始测试该应用程序。我有点困惑。
我阅读了官方文档并找到了 multiRemove
和 clear
函数,但我无法理解如何清除我的应用程序的所有项目(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')
}