ReactNative 数据持久化

react native 的数据存储有很多种方式,本来我选择的是 AsyncStorage,但是不知道为什么无法删除里面的数据,这样就无法进行登录注销。最后来回试了几个,选择了 react-native 已经封装好AsyncStorage的一款:react-native-storage
github地址:https://github.com/sunnylqm/react-native-storage/blob/master/README-CHN.md
这是一个本地持久存储的封装,可以同时支持 AsyncStorage 和 localStorage。不过我写 react 时,直接用的localStorage,未进行封装。
使用步骤:
1、安装:

npm install react-native-storage --save

2、导入:

import Storage from 'react-native-storage';

不要使用 require 语法导入。
3、初始化
因为我主要存储登录状态,所以需要全局存储。

import Storage from 'react-native-storage';
var storage = new Storage({ // 初始化
    size:1000,
    storageBackend: AsyncStorage,
    defaultExpires: null,
    enableCache:true,
});
global.storage = storage;//全局化

初始化时其实还有一个异步默认的方法,但是我这里不需要这个,所以我就没有进行设定。
这样全局化之后,我在任何地方,用storage就可以取到它并对它进行操作。
4、保存

var userName = e.username;
var userKey = e.key;
storage.save({
    key:'loginState’, // 相当于起了一个名字
    rawData: {
        userName:userName,
        userKey:userKey,
    },
});

5、读取

storage.load({
    key:'loginState',
}).then(ret => {  // ret中有值时返回
    this.setState({
        userName:ret.userName,
        userKey:ret.userKey,
    });
}).catch(err => { // ret中无值或异常时跳到登录界面
    this.props.nav.push({
        title:'Login',
        id:'login',
    });
});

6、删除

storage.remove({
    key:'loginState’,  //删除loginState
});

当然还有好几种删除方法,可在github上找,我这里只对这种进行了验证。
也有异步加载以及批量数据的读取,但我都还未涉及。

你可能感兴趣的:(ReactNative 数据持久化)