React Native数据存储

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

AsyncStorage是什么
  • 简单的,异步的,持久化的key-value存储系统
  • AsyncStorage在IOS下存储分为两种情况:
    • 存储内容较小,AsyncStorage会存储在序列化的字典中
    • 存储内容大,AsyncStorage会将数据单独存储在一个文件中
  • AsyncStorage在Android下,会将数据存储在SQLite或者RocksDB中,具体存储在哪里取决于设备支持哪一种方式
如何使用
安装
1.with npm:
npm install @react-native-async-storage/async-storage
2.如果是mac系统还需要pod-install一下:
npx pod-install
使用
import AsyncStorage from '@react-native-async-storage/async-storage';

存储数据:

static setItem(key: string, value: string, [callback]: ?(error: ?Error) => void)
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)
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)
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());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值