React Native之AsyncStorage

本文介绍了React Native中的AsyncStorage,一个全局异步Key-Value存储系统,用于App的持久化数据存储。它不支持SQL,适用于简单数据存储。内容包括AsyncStorage的使用方法如multiGet,用于获取多个键值对的详细解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

React Native 学习资源精选仓库

AsyncStorage官网

React Native 每日一学(Learn a little every day)

React Native - 持久化存储(AsyncStorage)的使用详解

AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的。它用来代替LocalStorage。

我们在AsyncStorage的基础上做一层抽象封装,而不是直接使用AsyncStorage。

AsyncStorage是不支持sql的,AsyncStorage是Key-Value存储系统。

方法


'use strict';

import {AsyncStorage} from 'react-native';

class EKVData{
//setItem:保存数据。
//将key字段的值设置成value,并在完成后调用callback函数。如果有任何错误发生,则会传递一个Error对象作为第一个参数。返回一个Promise对象。
    static setData(key, value) {
        return new Promise((resolve, reject) => {
            AsyncStorage.setItem(key, JSON.stringify(value), (error)=>{
                if(!error)
                    resolve('操作成功');
                else
                    reject('操作失败');
            });
        });
    }
//getItem:查询key。
//读取key字段并将结果作为第二个参数传递给callback。如果有任何错误发生,则会传递一个Error对象作为第一个参数。返回一个Promise对象。
    static getData(key) {
        return new Promise((resolve, reject) => {
            AsyncStorage.getItem(key, (error, result) => {
                if(!error){
                    if(result){
                        resolve(result);
                    }else{
                        reject(null);
                    }
                }else{
                    reject(null);
                }
            });
        });
    }

//removeItem:删除一个字段。返回一个Promise对象。
    static removeData(key) {
        return new Promise((resolve, reject)=>{
            AsyncStorage.removeItem(key, (error)=>{
                if(!error)
                    resolve('操作成功');
                else
                    reject('操作失败');
            });
        });
    }

}
module.exports = EKVData;

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

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

AsyncStorage.multiGet(keys, (err, stores) => {
            try {
            //map方法三个参数:当前正在遍历的元素, 元素索引, 原数组本身.
              stores.map((result, i, store) => {
              // get at each store's key/value so you can work with it
                let key = store[i][0];
                let value = store[i][1];
                if (value)items.push(JSON.parse(value));
              });
              resolve(items);
            } catch (e) {
              reject(e);
            }
          });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值