ReactNative (API)AsyncStorage存储详解及实例

时间:2021-05-20

AsyncStorage存储类似Android中的sharedpreference存储或者IOS中的NSDefaultUser不过ReactNative中的AsyncStorage只能存储字符串类型

常用方法:

getItem(key:string,callback?:?(error:?Error,result:?string)=>void) 静态方法,该通过key字段来进行查询存储的数据,把该结果值作为参数传入第二个callback方法。如果发生错误,会把Error对象传入callback方法。该方法最终返回一个Promise对象

setItem(key:string,value:string,callback?:?(error:?Error)=>void) 静态方法,该根据key字段设置value内容,完成之后进行回调callback方法。如果发生错误会把Error对象传入callback方法中。该方法返回一个Promise对象。

removeItem(key:string,callback?:?(error:?Error)=>void) 静态方法,根据key进行删除值,成功之后进行回调callback方法。如果发生错误会把Error对象传入callback方法中。该方法返回一个Promise对象。

/** * Created by Administrator on 2016/9/12. */import React, {Component} from 'react';import { StyleSheet, View, Text, AsyncStorage} from 'react-native';var keyName = 'name';var keyValue = '张三';class AsyncStorageG extends Component { constructor(props) { super(props); this.state = { result: '初始值' }; } render() { return ( <View style={{flex: 1}}> <Text style={styles.text} onPress={this.save.bind(this)}>存</Text> <Text style={styles.text} onPress={()=>this.load()}>取</Text> <Text style={styles.text} onPress={()=> this.remove()}>删除</Text> <Text style={styles.text} >存储的内容是------------------{this.state.result}</Text> </View> ) } /** * 存数据 */ save() { //this 是指当前对象 this2 = this; AsyncStorage.setItem(keyName, keyValue, function (error) { if (error) { alert('存储失败'); } else { this2.setState( { result: '数据已经保存,取出来看看吧!!!' } ) } }) } /** * 取数据 */ load() { //this 是指当前对象 this2 = this; AsyncStorage.getItem(keyName, function (error, result) { if (!error) { this2.setState( { result: result === null ? '数据已经删除,现在取的是空值' : result } ) } }) } /** * 两个参数: * 一个是要删除指定key内容 * 第二个是一个回调函数 */ remove() { //this 是指当前对象 this2 = this; AsyncStorage.removeItem(keyName, function (error) { if (!error) { this2.setState( { result: '数据已经删除' } ) } }) }}const styles = StyleSheet.create({ text: { fontSize: 20 }});//es6写法export default AsyncStorageG;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章