1,AsyncStorage介绍
- AsyncStorage 是一个简单的、异步的、持久化的 Key-Value 存储系统,它对于 App 来说是全局性的。它用来代替 LocalStorage。
- 由于它的操作是全局的,官方建议我们最好针对 AsyncStorage 进行一下抽象的封装再使用,而且不是直接拿 AsyncStorage 进行使用。
- AsyncStorage 存储的位置根据系统的不同而有所差异。iOS 中的存储类似于 NSUserDefault,通过 plist 文件存放在设备中。Android 中会存储在 RocksDB 或者 SQLite 中,取决于你使用哪个。
2,常用接口
根据键来获取值,获取的结果会放在回调函数中:
static getItem(key: string, callback:(error, result))
根据键来设置值:
static setItem(key: string, value: string, callback:(error))
根据键来移除项:
static removeItem(key: string, callback:(error))
获取所有的键:
static getAllKeys(callback:(error, keys))
设置多项,其中 keyValuePairs 是字符串的二维数组,比如:[['k1', 'val1'], ['k2', 'val2']]:
static multiSet(keyValuePairs, callback:(errors))
获取多项,其中 keys 是字符串数组,比如:['k1', 'k2']:
static multiGet(keys, callback:(errors, result))
删除多项,其中 keys 是字符串数组,比如:['k1', 'k2']:
static multiRemove(keys, callback:(errors))
清除所有的项目:
static clear(callback:(error))
3,注意事项
需要注意的是,在使用AsyncStorage的时候,setItem里面传入的数组或字典等对象需要使用JSON.stringtify()
方法把他们解析成JSON字符串,反过来,在getItem方法里获取数组或字典等对象的时候需要使用JSON.parse
方法将他们解析成对象。使用方法如下:
module.exports = { /**保存信息*/ save(key, value) { return AsyncStorage.setItem(key, JSON.stringify(value)); }, /**取数据*/ getValue(key, callback) { return AsyncStorage.getItem(key).then((value) => { const jsonValue = JSON.parse(value); callback(jsonValue); return jsonValue; }); }, /**删除信息*/ delete(key) { return AsyncStorage.removeItem(key); }, };
调用方法如下:
saveData(){ let name= getValue('name',(n)=>{ if (n!=undefined) { showMsg(n); delete('name'); save('name','wang') }else{ showMsg('没有数据'); save('name','li') } }) }
.