ReactNative 數(shù)據(jù)持久化

react native 的數(shù)據(jù)存儲(chǔ)有很多種方式,本來(lái)我選擇的是 AsyncStorage,但是不知道為什么無(wú)法刪除里面的數(shù)據(jù),這樣就無(wú)法進(jìn)行登錄注銷(xiāo)。最后來(lái)回試了幾個(gè),選擇了 react-native 已經(jīng)封裝好AsyncStorage的一款:react-native-storage
github地址:https://github.com/sunnylqm/react-native-storage/blob/master/README-CHN.md
這是一個(gè)本地持久存儲(chǔ)的封裝,可以同時(shí)支持 AsyncStorage 和 localStorage。不過(guò)我寫(xiě) react 時(shí),直接用的localStorage,未進(jìn)行封裝。
使用步驟:
1、安裝:

npm install react-native-storage --save

2、導(dǎo)入:

import Storage from 'react-native-storage';

不要使用 require 語(yǔ)法導(dǎo)入。
3、初始化
因?yàn)槲抑饕鎯?chǔ)登錄狀態(tài),所以需要全局存儲(chǔ)。

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

初始化時(shí)其實(shí)還有一個(gè)異步默認(rèn)的方法,但是我這里不需要這個(gè),所以我就沒(méi)有進(jìn)行設(shè)定。
這樣全局化之后,我在任何地方,用storage就可以取到它并對(duì)它進(jìn)行操作。
4、保存

var userName = e.username;
var userKey = e.key;
storage.save({
    key:'loginState’, // 相當(dāng)于起了一個(gè)名字
    rawData: {
        userName:userName,
        userKey:userKey,
    },
});

5、讀取

storage.load({
    key:'loginState',
}).then(ret => {  // ret中有值時(shí)返回
    this.setState({
        userName:ret.userName,
        userKey:ret.userKey,
    });
}).catch(err => { // ret中無(wú)值或異常時(shí)跳到登錄界面
    this.props.nav.push({
        title:'Login',
        id:'login',
    });
});

6、刪除

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

當(dāng)然還有好幾種刪除方法,可在github上找,我這里只對(duì)這種進(jìn)行了驗(yàn)證。
也有異步加載以及批量數(shù)據(jù)的讀取,但我都還未涉及。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容