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上找,我這里只對這種進行了驗證。
也有異步加載以及批量數據的讀取,但我都還未涉及。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容