react-native中AsyncStorage实例详解

发布时间 - 2026-01-11 00:27:22    点击率:

react-native中AsyncStorage实例详解

AsyncStorage是一个简单的,具有异步特性的储存API,它的储存方式为键值对的方式,且对整个App而言,是全局的。

AsyncStorage提供了较全的方法供我们使用,每个方法都有一个回调函数,而回调函数的第一个参数都是错误对象error,所有的方法执行之后都会返回一个Promise对象。

方法:

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, value: string, callback?: ?(error: ?Error) => void) 

假设已有的值和新的值都是字符串化的JSON,则将两个值合并。返回一个Promise对象。还没有被所有原生实现都支持。

static clear(callback?: ?(error: ?Error) => void) 

删除全部的AsyncStorage数据,不论来自什么库或调用者。通常不应该调用这个函数——使用removeItem或者multiRemove来清除你自己的key。返回一个Promise对象。

static getAllKeys(callback?: ?(error: ?Error, keys: ?Array<string>) => void) 

获取所有本应用可以访问到的数据,不论来自什么库或调用者。返回一个Promise对象。

static flushGetRequests() 

清除所有进行中的查询操作。

static multiGet(keys: Array<string>, callback?: ?(errors: ?Array<Error>, result: ?Array<Array<string>>) => void) 

获取keys所包含的所有字段的值,调用callback回调函数时返回一个key-value数组形式的数组。返回一个Promise对象。

multiGet(['k1', 'k2'], cb) -> cb([['k1', 'val1'], ['k2', 'val2']])

static multiSet(keyValuePairs: Array<Array<string>>, callback?: ?(errors: ?Array<Error>) => void) 

multiSet和multiMerge都接受一个与multiGet输出值一致的key-value数组的数组。返回一个Promise对象。

multiSet([['k1', 'val1'], ['k2', 'val2']], cb);

static multiRemove(keys: Array<string>, callback?: ?(errors: ?Array<Error>) => void) 

删除所有键在keys数组中的数据。返回一个Promise对象。

static multiMerge(keyValuePairs: Array<Array<string>>, callback?: ?(errors: ?Array<Error>) => void) 

将多个输入的值和已有的值合并,要求都是字符串化的JSON。返回一个Promise对象。

还没有被所有原生实现都支持。

小例子:

import React from 'react';
import {View,StyleSheet,Text,AsyncStorage} from 'react-native';

export default class Root extends React.Component{
 constructor(props){
 super(props);
 this.set = this.set.bind(this);
 this.get = this.get.bind(this);
 this.clear = this.clear.bind(this);
 }
 //渲染
 render(){

 return (
  <View style = {style.container}>
  <Text onPress = {this.set}>储存数据</Text>
  <Text style = {{marginTop: 10}} onPress = {this.get}>
   获取数据
  </Text>
  <Text style = {{marginTop: 10}} onPress = {this.clear}>
   清除数据
  </Text>
  </View>
 );
 }
 set(){
 AsyncStorage.setItem('name','gefufeng',(error) => {
  if (error) {
  alert("储存失败");
  }else{
  alert("储存成功");
  }
 });
 }
 get(){
 AsyncStorage.getItem('name',(error,result) => {
  if (error) {
  alert("获取失败");
  }else{
  alert("数据为:" + result);
  }
 });
 }
 clear(){
 AsyncStorage.removeItem('name',(error) => {
  if (!error) {
  alert("清除成功");
  }
 });
 }
}
const style = StyleSheet.create({
 container : {
 flex: 1,
 alignItems: 'center',
 justifyContent: 'center',
 backgroundColor : "#F5FCFF"
 }

});

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


# react-native中AsyncStorage  # react-native中AsyncStorage详解  # ReactNative (API)AsyncStorage存储详解及实例  # React Native AsyncStorage本地存储工具类  # 都是  # 第一个  # 回调  # 还没有  # 则会  # 自己的  # 是一个  # 有任何  # 都有  # 多个  # 调用者  # 并在  # 希望能  # 第二个  # 并将  # 谢谢大家  # 键值  # 则将  # 设置成  # 所包含 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  实例解析angularjs的filter过滤器  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  香港服务器租用费用高吗?如何避免常见误区?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  焦点电影公司作品,电影焦点结局是什么?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  JavaScript如何实现倒计时_时间函数如何精确控制  Laravel怎么在Blade中安全地输出原始HTML内容  如何在腾讯云免费申请建站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel观察者模式如何使用_Laravel Model Observer配置  微信小程序 input输入框控件详解及实例(多种示例)  千库网官网入口推荐 千库网设计创意平台入口  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  EditPlus 正则表达式 实战(3)  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何在阿里云购买域名并搭建网站?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  如何在服务器上三步完成建站并提升流量?  百度浏览器如何管理插件 百度浏览器插件管理方法  Java遍历集合的三种方式  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  如何快速辨别茅台真假?关键步骤解析  怎么用AI帮你为初创公司进行市场定位分析?  如何快速打造个性化非模板自助建站?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  微信h5制作网站有哪些,免费微信H5页面制作工具?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  如何用狗爹虚拟主机快速搭建网站?  微信小程序 canvas开发实例及注意事项  清除minerd进程的简单方法  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Laravel如何处理和验证JSON类型的数据库字段  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Python3.6正式版新特性预览  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全