React-Native学习笔记之:AsyncStorage数据存取操作

前端之家收集整理的这篇文章主要介绍了React-Native学习笔记之:AsyncStorage数据存取操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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@

猜你在找的React相关文章