AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的。 我们推荐您在AsyncStorage的基础上做一层抽象封装,而不是直接使用AsyncStorage。 主要使用到的方法有:
- static getItem(key: string,callback?: ?(error: ?Error,result: ?string) => void)
读取key字段并将结果作为第二个参数传递给callback。如果有任何错误发生,则会传递一个Error对象作为第一个参数。返回一个Promise对象。 - static setItem(key: string,value: string,callback?: ?(error: ?Error) => void)
将key字段的值设置成value,并在完成后调用callback函数。如果有任何错误发生,则会传递一个Error对象作为第一个参数。返回一个Promise对象。
- static removeItem(key: string,callback?: ?(error: ?Error) => void)
删除一个字段。返回一个Promise对象。
- static mergeItem(key: string,callback?: ?(error: ?Error) => void)
假设已有的值和新的值都是字符串化的JSON,则将两个值合并。返回一个Promise对象。还没有被所有原生实现都支持。
- static clear(callback?: ?(error: ?Error) => void)
删除全部的AsyncStorage数据,不论来自什么库或调用者。通常不应该调用这个函数——使用removeItem或者multiRemove来清除你自己的key。返回一个Promise对象。
更多可以http://reactnative.cn/docs/0.20/asyncstorage.html。
示例DEMO:
//@H_301_34@noinspection JSUnresolvedVariable
import@H_301_34@ React,{Component} from 'react'@H_301_34@
//@H_301_34@noinspection JSUnresolvedVariable
import@H_301_34@ {
AppRegistry,StyleSheet,View,TextInput,AsyncStorage,Text
} from 'react-native'@H_301_34@;
import@H_301_34@ Toast,{DURATION} from 'react-native-easy-toast'@H_301_34@; //@H_301_34@引入Toast控件
//@H_301_34@AsyncStorage是以键值对的形式保存数据 ,诸如安卓中SharedPreferences一样
const@H_301_34@ AS_KEY = "as_key"@H_301_34@;
export@H_301_34@ default@H_301_34@ class@H_301_34@ AsyncStoreDemo@H_301_34@ extends@H_301_34@ Component@H_301_34@ {@H_301_34@
constructor(props) {
super@H_301_34@(props);
}
//@H_301_34@保存数据
asSave() {
AsyncStorage.setItem(AS_KEY,this@H_301_34@.text,(error) => { if@H_301_34@ (!error) { this@H_301_34@.toast.show('保存数据成功'@H_301_34@,DURATION.LENGTH_SHORT); } else@H_301_34@ { this@H_301_34@.toast.show('保存数据失败'@H_301_34@,DURATION.LENGTH_SHORT); } })@H_301_34@ } //查询保存的数据 asQuery@H_301_34@()@H_301_34@ { AsyncStorage@H_301_34@.getItem@H_301_34@(AS_KEY,(error,result) => { if@H_301_34@ (!error) { if@H_301_34@ (result !== ''@H_301_34@ && result !== null@H_301_34@) { this@H_301_34@.toast.show('查询到的内容是:'@H_301_34@ + result,DURATION.LENGTH_SHORT); } else@H_301_34@ { this@H_301_34@.toast.show('未找到指定保存的内容!'@H_301_34@,DURATION.LENGTH_SHORT); } } else@H_301_34@ { this@H_301_34@.toast.show('查询数据失败'@H_301_34@,DURATION.LENGTH_SHORT); } })@H_301_34@ } //删除已经保存的数据 asDelete@H_301_34@()@H_301_34@ { AsyncStorage@H_301_34@.removeItem@H_301_34@(AS_KEY,(error) => { if@H_301_34@ (!error) { this@H_301_34@.toast.show('删除数据成功'@H_301_34@,DURATION.LENGTH_SHORT); } else@H_301_34@ { this@H_301_34@.toast.show('删除数据失败'@H_301_34@,DURATION.LENGTH_SHORT); } })@H_301_34@ } render@H_301_34@()@H_301_34@ { return@H_301_34@ (<View style={styles.container}> <TextInput style={styles.edit} //@H_301_34@文字内容发生改变调用方法 onChangeText={text=>this@H_301_34@.text=text}/> <View style={styles.child}> <Text style={styles.text} onPress={()=>{ this@H_301_34@.asSave() }}>保存</Text> <Text style={styles.text} onPress={()=>{ this@H_301_34@.asQuery() }}>查询</Text> <Text style={styles.text} onPress={()=>{ this@H_301_34@.asDelete() }}>删除</Text> </View> <Toast ref={toast=>{ this@H_301_34@.toast=toast }}/> </View>)@H_301_34@; } } const@H_301_34@ styles@H_301_34@ = StyleSheet@H_301_34@.create@H_301_34@({ container: { flex: 1@H_301_34@ },child: { flexDirection: 'row'@H_301_34@ },edit: { fontSize: 20@H_301_34@,borderWidth: 1@H_301_34@,borderColor: '#d1d1d1'@H_301_34@,margin: 10@H_301_34@,paddingLeft: 5@H_301_34@,height: 45@H_301_34@,borderRadius:3@H_301_34@ },text: { fontSize: 20@H_301_34@,color: '#333'@H_301_34@,marginLeft: 15@H_301_34@ } })@H_301_34@;@H_301_34@