使用
Async Storage 只能用来储存字符串数据,所以为了去储存object类型的数据,得先进行序列化(
JSON.stringify()
)当你想要使用数据的时候,就可以使用JSON.parse()
储存数据
setItem()
储存的是键值对
储存string类型的值:
const storeData = async (value) => {
try {
await AsyncStorage.setItem('@storage_Key', value)
} catch (e) {
// saving error
}
}
储存object类型的值:
const storeData = async (value) => {
try {
const jsonValue = JSON.stringify(value)
await AsyncStorage.setItem('@storage_Key', jsonValue)
} catch (e) {
// saving error
}
}
读取数据
读取String类型的数据:
const getData = async () => {
try {
const value = await AsyncStorage.getItem('@storage_Key')
if(value !== null) {
// value previously stored
}
} catch(e) {
// error reading value
}
}
读取object类型的数据
const getData = async () => {
try {
const jsonValue = await AsyncStorage.getItem('@storage_Key')
return jsonValue != null ? JSON.parse(jsonValue) : null;
} catch(e) {
// error reading value
}
}
删除数据
removeValue = async () => {
try {
await AsyncStorage.removeItem('@MyApp_key')
} catch(e) {
// remove error
}
console.log('Done.')
}
删除所有的数据
clearAll = async () => {
try {
await AsyncStorage.clear()
} catch(e) {
// clear error
}
console.log('Done.')
}
Demo
import AsyncStorage from '@react-native-async-storage/async-storage';
export default {
constructor() {},
async get(key) {
if (!key) {
return null;
}
key = key.toString();
return await AsyncStorage.getItem(key)
.then((value) => {
if (value) {
return JSON.parse(value);
}
return null;
})
.catch(() => {
return null;
});
},
async set(key, value) {
if (!key) {
return;
}
key = key.toString();
await AsyncStorage.setItem(
key,
JSON.stringify({
value,
}),
);
},
/**
* 删除key对应json数值
* @param key
* @returns {Promise<string>}
*/
async deleteItem(key) {
if (!key) {
return;
}
return await AsyncStorage.removeItem(key);
},
/**
* 删除所有配置数据
* @returns {Promise<string>}
*/
async clear() {
return await AsyncStorage.clear();
},
};