react native AsyncStorage的使用

  如果现在有一个需求,是要把用户的账号密码保存到本地,大家会怎么做的呢?如果在android中,我相信一大部分人会想到SharedPreferences,这是一个以键值对的形式进行存储的。那如果在react native中呢,有没有一个像SharedPreferences一样的轻量存储器呢?答案是有的---AsyncStorage。

  AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的。这是官网上对它的介绍。可以知道,这个asyncstorage也是以键值对的形式进行存储数据的。

  那么问题来了,该怎么使用这个呢?官网上说并不推荐我们直接用这个asyncstorage,而是进行抽象封装以后在进行调用。首先看一看我在项目中的用法。

上代码:

 1 import React, {
 2     AsyncStorage
 3 }from 'react-native';
 4 
 5 class DeviceStorage {
 6     /**
 7      * 获取
 8      * @param key
 9      * @returns {Promise<T>|*|Promise.<TResult>}
10      */
11 
12     static get(key) {
13         return AsyncStorage.getItem(key).then((value) => {
14             const jsonValue = JSON.parse(value);
15             return jsonValue;
16         });
17     }
18 
19 
20     /**
21      * 保存
22      * @param key
23      * @param value
24      * @returns {*}
25      */
26     static save(key, value) {
27         return AsyncStorage.setItem(key, JSON.stringify(value));
28     }
29 
30 
31     /**
32      * 更新
33      * @param key
34      * @param value
35      * @returns {Promise<T>|Promise.<TResult>}
36      */
37     static update(key, value) {
38         return DeviceStorage.get(key).then((item) => {
39             value = typeof value === 'string' ? value : Object.assign({}, item, value);
40             return AsyncStorage.setItem(key, JSON.stringify(value));
41         });
42     }
43 
44 
45     /**
46      * 更新
47      * @param key
48      * @returns {*}
49      */
50     static delete(key) {
51         return AsyncStorage.removeItem(key);
52     }
53 }
54 
55 export default DeviceStorage;

可以看到asyncstorage中存在有更删改查这些方法,当然,上面是把asyncstorage进行了封装,在其他地方调用的时候就可以作为一个工具进行调用了。

调用方式:

1 //appHotSearchTagList就是当时保存的时候所保存的key,而tags就是保存的值
2 
3 Storage.get('appHotSearchTagList').then((tags) => {
4             this.setState({
5                 tags: tags
6             })
7         });

这里我只是贴出了一种获取数据的方式,其实另外的更新,删除,保存,方式都是差不多。