React-native 之 AsyncStorage学习

简介: AsyncStorage 是react-native 用来做异步存储使用的 ,它的所有的api都有一个回调方法,回调方法的第一个参数是error,显示错误信息,如果没有错误则为 null ,AsyncStorage 返回的都是一个Promise 对象 ,一下是一些比较常用到的API static getItem(key:string , callback:(erro

AsyncStorage 是react-native 用来做异步存储使用的 ,它的所有的api都有一个回调方法,回调方法的第一个参数是error,显示错误信息,如果没有错误则为 null ,AsyncStorage 返回的都是一个Promise 对象 ,一下是一些比较常用到的API


  • static getItem(key:string , callback:(error,result)): 根据键来获取值,获取的结果会在回调函数中。
  • static setItem(key:string , value:string , callback:(error)): 设置键值对。
  • static removeItem(key:string , callback:(error)): 将根据键移出一项
  • static mergeItem:(key:string , value:string , callback:(error)): 合并现有的值和输入值。
  • static clear(callback:(error)): 清除所有的项目。
  • static getAllKeys(callback:(error)): 获取所有的键。
  • static multiGet(keys,callback:(errors,result)):获取多项,其中keys是字符串数组。
  • static multiSet(keyValuePairs,callback:(errors)):设置多项,其中keyValuePairs是字符串的二维数组。
  • static multiRemove(keys,callback(errors)):删除多项,其中keys是字符串数组。
  • static multiMerge(keyValuePairs,callback:(errors)):多个键值合并,其中keyValuePairs是字符串中的二维数组。


'use strict' ;
import React, {
   AppRegistry,
   Component,
   StyleSheet,
   Text,
   View,
   AsyncStorage,
   TouchableHighlight,
} from 'react-native' ;
var STORAGE_KEY_ONE = '@AsyncStorageDemo:key_one' ;
var STORAGE_KEY_MESSAGE = '@AsyncStorageDemo:key_message' ;
//简单封装一个组件
class CustomButton extends React.Component {
   render() {
     return (
       <TouchableHighlight
         style={styles.button}
         underlayColor= "#a5a5a5"
         onPress={ this .props.onPress}>
         <Text style={styles.buttonText}>{ this .props.text}</Text>
       </TouchableHighlight>
     );
   }
}
class AsyncStorageDemo extends Component {
   constructor(props){
     super (props);
     this .state={
         messages:[],
     };
   }
   //组件挂载之后回调方法
   componentDidMount(){
        this ._loadInitialState().done();
   }
   //初始化数据-默认从AsyncStorage中获取数据
   async _loadInitialState(){
        try {
           var value=await AsyncStorage.getItem(STORAGE_KEY_ONE);
           if (value!= null ){
             this ._appendMessage( '从存储中获取到数据为:' +value);
           } else {
             this ._appendMessage( '存储中无数据,初始化为空数据' );
           }
        } catch (error){
             this ._appendMessage( 'AsyncStorage错误' +error.message);
        }
   }
   //进行储存数据_ONE
   async _saveValue_One(){
       try {
          await AsyncStorage.setItem(STORAGE_KEY_ONE, '我是老王' );
          this ._appendMessage( '保存到存储的数据为:' + '我是老王' );
       } catch (error){
          this ._appendMessage( 'AsyncStorage错误' +error.message);
       }
   }
   //进行存储数据删除_ONE
   async _removeValue_One(){
       try {
          await AsyncStorage.removeItem(STORAGE_KEY_ONE);
          this ._appendMessage( '数据删除成功...' );
       } catch (error){
          this ._appendMessage( 'AsyncStorage错误' +error.message);
       }
   }
   //进行把message信息添加到messages数组中
   _appendMessage(message){
      this .setState({messages: this .state.messages.concat(message)});
   }
   render() {
     return (
       <View>
         <Text style={styles.welcome}>
            AsyncStorage使用实例
         </Text>
         <CustomButton text= '点击存储数据_我是老王' onPress={ this ._saveValue_One}/>
         <CustomButton text= '点击删除数据' onPress={ this ._removeValue_One}/>
         <Text style={styles.content}>信息为:</Text>
         { this .state.messages.map((m) => <Text style={styles.content} key={m}>{m}</Text>)}
       </View>
     );
   }
}
const styles = StyleSheet.create({
   welcome: {
     fontSize: 14,
     textAlign: 'left' ,
     margin: 10,
   },
   content:{
     fontSize: 13,
     textAlign: 'left' ,
     margin: 10,
   },
    button: {
     margin:5,
     backgroundColor: 'white' ,
     padding: 15,
     borderBottomWidth: StyleSheet.hairlineWidth,
     borderBottomColor: '#cdcdcd' ,
   }
});
 
AppRegistry.registerComponent( 'AsyncStorageDemo' , () => AsyncStorageDemo);


目录
相关文章
|
8天前
|
前端开发 API UED
怎么学习React 18 进行项目开发?
【4月更文挑战第18天】学习React 18涉及新特性如并发模式、Suspense API和自动批处理更新,可提升性能和用户体验。首先了解这些新特性,然后掌握React基础知识,如组件化、JSX、props和state。使用Create React App创建项目,学习如何启用并发模式和使用Suspense显示占位符。实现自定义组件,关注props传递、状态管理和事件处理。通过Profiler优化性能,利用懒加载和代码分割减少加载时间,使用Context API共享状态。不断实践和探索,参考官方文档与社区资源,以提高开发技能。
103 3
|
8天前
|
前端开发 JavaScript API
如何学习react
【4月更文挑战第9天】 学习React前,需掌握JavaScript基础,了解React的JSX、组件、props、state和生命周期等概念。安装Node.js和npm,用Create React App搭建环境。学习核心API,如React.createElement、React.render等,并阅读官方文档。实践项目,从Todo List开始,逐渐挑战复杂应用。同时,学习相关技术如Redux、React Router,并参与社区交流,持续关注React新发展。持之以恒,祝学习顺利!
29 10
|
8天前
|
前端开发 JavaScript
react学习(Effect)
react学习(Effect)
25 3
|
8天前
|
开发框架 前端开发 JavaScript
从零开始学习React Native开发
React Native是一种基于React框架的移动端开发框架,使用它可以快速地构建出高性能、原生的移动应用。本文将从零开始,介绍React Native的基础知识和开发流程,帮助读者快速入门React Native开发,并实现一个简单的ToDo应用程序。
|
8天前
|
人工智能 JSON 前端开发
react17+ts 学习
react17+ts 学习
|
8天前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
8天前
|
存储 前端开发 JavaScript
从零开始学习React Native开发
【2月更文挑战第1天】React Native是一种跨平台的移动应用程序框架,可以使用JavaScript和React来构建Android和iOS应用程序。本文将带您从零开始学习React Native开发,涵盖了基础知识、组件、样式、布局、API等方面。
|
8天前
|
Rust 前端开发 JavaScript
IM跨平台技术学习(十):快速对比跨平台框架Electron、Flutter、Tauri、React Native等
在本文中,我们将比较五种流行的桌面应用程序开发框架:Electron、Flutter、Tauri、React Native 和 Qt,希望可以帮助你根据项目需求做出明智的技术选型决策。
207 2
|
8天前
|
前端开发 JavaScript API
中国农村大学生学习了这个【React教程】迎娶导师女儿,出任CEO走上人生巅峰
中国农村大学生学习了这个【React教程】迎娶导师女儿,出任CEO走上人生巅峰
41 0
|
8天前
|
前端开发
【React学习】—SetState的使用(九)
【React学习】—SetState的使用(九)

热门文章

最新文章