0%
- 在RN开发中,持久化存储数据,可以使用
AsyncStorage
,对原生的API进行了一层封装
AsyncStorage
是一个简单的、异步的、持久化的Key-Value
存储系统,它对于App
来说是全局性的
AsyncStorage
原理和使用
AsyncStorage
存储数据,在iOS中,底层会把数据保存到沙盒中的Documents
中,并生成manifest.json
文件。保存的数据都在manifest.json
中。
AsyncStorage
删除数据,也仅仅是删除manifest.json
文件中的数据,并不是删除manifest.json
文件
- 唯有
clear
方法是将文件删除
存储
1 2
| static setItem(key: string, value: string, callback?: ?(error: ?Error) => void)
|
- 注意:
AsyncStorage
只能存储字符串,需要把对象转换为字符串才行
- 具体使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| var key = 'per' var person = { name:'jun', age:20 }
var jsonStr = JSON.stringify(person)
AsyncStorage.setItem('person', jsonStr, function (error) { if (error) { alert('存储失败') }else { alert('存储完成') } })
|
读取
1 2
| static getItem(key: string, callback?: ?(error: ?Error, result: ?string) => void)
|
使用方法
1 2 3 4 5 6 7 8 9 10 11 12 13
| _readData(){ console.log('读取') AsyncStorage.getItem('per', function (error, result) { if (error) { alert('读取失败') }else { console.log(result) alert('读取完成') } }) }
|
删除
1 2 3 4 5
| static removeItem(key: string, callback?: ?(error: ?Error) => void)
static clear(callback?: ?(error: ?Error) => void)
|
函数用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| _deleteData(){ console.log('删除')
AsyncStorage.removeItem('per', function (error) { if (error) { alert('删除失败') }else { alert('删除完成') } })
AsyncStorage.clear(function (error) { if (error) { alert('文件删除失败') }else { alert('文件删除完成') } }) }
|
其他用法
1 2 3 4 5 6 7 8
| static mergeItem(key: string, value: string, callback?: ?(error: ?Error) => void)
static getAllKeys(callback?: ?(error: ?Error, keys: ?Array<string>) => void)
static flushGetRequests()
|