react native 的數(shù)據(jù)存儲(chǔ)有很多種方式喧兄,本來我選擇的是 AsyncStorage分冈,但是不知道為什么無法刪除里面的數(shù)據(jù)派哲,這樣就無法進(jìn)行登錄注銷只估。最后來回試了幾個(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仅乓。不過我寫 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è)缕棵,所以我就沒有進(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中無值或異常時(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ù)的讀取渴肉,但我都還未涉及冗懦。