React Native数据存储

最近做RN开发中需要数据存储,查阅RN官方资料,发现推荐我们使用 AsyncStorage,对使用步骤做一下记录。

AsyncStorage是什么

  • 简单的,异步的,持久化的key-value存储系统
  • AsyncStorage在IOS下存储分为两种情况:
    • 存储内容较小,AsyncStorage会存储在序列化的字典中
    • 存储内容大,AsyncStorage会将数据单独存储在一个文件中
  • AsyncStorage在Android下,会将数据存储在SQLite或者RocksDB中,具体存储在哪里取决于设备支持哪一种方式

如何使用

安装
1.with npm:
shell 复制代码
npm install @react-native-async-storage/async-storage
2.如果是mac系统还需要pod-install一下:
shell 复制代码
npx pod-install
使用
js 复制代码
import AsyncStorage from '@react-native-async-storage/async-storage';

存储数据:

复制代码
static setItem(key: string, value: string, [callback]: ?(error: ?Error) => void)
js 复制代码
async saveData() {
    //用法一
    AsyncStorage.setItem(KEY, this.value, error => {
        error && console.log(error.toString());
    });

    //用法二
    AsyncStorage.setItem(KEY, this.value)
        .catch(error => {
            error && console.log(error.toString());
        });

    //用法三
    try {
        await  AsyncStorage.setItem(KEY, this.value);
    } catch (error) {
        error && console.log(error.toString());
    }
}

获取数据:

复制代码
static getItem(key: string, [callback]: ?(error: ?Error, result: ?string) => void)
js 复制代码
async getData() {
    //用法一
    AsyncStorage.getItem(KEY, (error, value) => {
        this.setState({
            showText: value
        });
        console.log(value);
        error && console.log(error.toString());
    });
    //用法二
    AsyncStorage.getItem(KEY)
        .then(value => {
            this.setState({
                showText: value
            });
            console.log(value);

        })
        .catch(error => {
            error && console.log(error.toString());
        });
    //用法三
    try {
        const value = await  AsyncStorage.getItem(KEY);
        this.setState({
            showText: value
        });
        console.log(value);
    } catch (error) {
        error && console.log(error.toString());
    }
}

删除数据:

复制代码
static removeItem(key: string, [callback]: ?(error: ?Error) => void)
js 复制代码
async removeData() {
    //用法一
    AsyncStorage.removeItem(KEY,error => {
        error && console.log(error.toString());
    });

    //用法二
    AsyncStorage.removeItem(KEY)
        .catch(error => {
            error && console.log(error.toString());
        });

    //用法三
    try {
        await  AsyncStorage.removeItem(KEY);
    } catch (error) {
        error && console.log(error.toString());
    }
}
相关推荐
JuneTT33 分钟前
【JS】使用内连配置强制引入图片为base64
前端·javascript
代码与野兽1 小时前
AI交易,怎么让LLM自己挑选数据源?
前端·javascript·后端
CC码码1 小时前
前端文本分割工具,“他”来了
前端·javascript·程序员
星火飞码iFlyCode1 小时前
MySQL数据库操作一致性保证(智能对话+AI代码补全案例)【留言有奖】
javascript
韩曙亮1 小时前
【Web APIs】JavaScript 执行机制 ( 单线程特点 | 同步任务与异步任务 | 同步先行、异步排队 | 事件循环机制 )
开发语言·前端·javascript·异步任务·同步任务·web apis·js 引擎
萌狼蓝天2 小时前
[Vue2]项目中 vue-draggable-resizable 列宽拖动问题修复(首次拖动列宽突然变得很小)
前端·javascript·vue.js·前端框架·ecmascript
带带弟弟学爬虫__2 小时前
ks安卓—did注册
前端·javascript·vue.js·python·网络爬虫
sztian682 小时前
JavaScript-----本地存储、数组中map方法、数组中join方法
开发语言·javascript·ecmascript
南山安2 小时前
JS 进阶:手写 instanceof 与JS继承全面讲解
javascript·面试·编程语言
小旭@2 小时前
vue3官方文档巩固
前端·javascript·vue.js