React Native之数据存储技术AsyncStorage

女生的网名这么多〃 提交于 2020-04-29 18:09:21

1. 如何将数据存储到本地?

数据存储是开发APP必不可少的一部分,比如页面缓存,从网络上获取数据的本地持久化等,那么在RN中如何进行数据存储呢?

RN官方推荐我们在RN中使用AsyncStorage进行数据存储

2. 什么是AsyncStorage?

2.1 特点

  • 简单的,异步的,持久化的key-value存储系统
  • AsyncStorage也是React Native官方推荐的数据存储方式,旨在代替LocalStorage

2.2 AsyncStorage在ios中存储的两种情况

  • 如果存储的内容较小,那么AsyncStorage会将存储的内容放在一个序列化的字典
  • 如果存储的内容较大,那么AsyncStorage会将存储的内容放在一个单独的文件

2.3 AsyncStorage在android中存储也分为两种情况:

  • AsyncStorage会将数据存储在RocksDB或者SQLite中,具体存在RocksDB中还是SQLite中这取决于设备支持哪一种存储方式。

3. 如何使用AsyncStorage?

  首先导入AsyncStorage作为RN一个标准组件使用

import AsyncStorage from '@react-native-community/async-storage'; 
//import { AsyncStorage } from 'react-native';

在最新的react-native版本中已经将AsyncStorage分离出去了,然后在android上需要手动link一下,具体参照我写的一篇关于link的文章点击查看手动link教程  

3.1 存储数据

 /**
 *  存储数据
 *
 * @memberof AsyncStorageDemoPage
 */
async doSave() {
            // 用法一
    AsyncStorage.setItem(KEY, this.value, err => {
        err && console.log(err.toString());
     })
    
    // 用法二
    AsyncStorage.setItem(KEY, this.value)
        .catch(err => {
            err && console.log(err.toString());
    })
     // 用法三
    try {
        await AsyncStorage.setItem(KEY, this.value)
    } catch (err) {
        err && console.log(err.toString());
    }
}

3.2 获取数据

 /**
 * 获取数据
 *
 * @memberof AsyncStorageDemoPage
*/
async getData() {
    // 用法一
    AsyncStorage.getItem(KEY, (err, value) => {
        this.setState({
            showText: value
        });
        console.log(value);
        err && console.log(err.toString());
    })
    // 用法二
    AsyncStorage.getItem(KEY)
        .then(value => {
            this.setState({
                showText: value
            })
        })
        .catch(err => {
            err && console.log(err.toString());
        })
    // 用法三
    try {
        const value = AsyncStorage.getItem(KEY);
        this.setState({
            showText: value
        });
    } catch (err) {
        err && console.log(err.toString());
    }
}

3.3 移除数据

/**
* 移除数据
*
* @memberof AsyncStorageDemoPage
*/
async doRemove() {
    // 用法一
    AsyncStorage.removeItem(KEY, err => {
        err && console.log(err.toString());
    })
    // 用法二
    AsyncStorage.removeItem(KEY)
        .catch(err => {
            err && console.log(err.toString());
        })
    // 用法三
    try {
        await AsyncStorage.removeItem(KEY);
    } catch(err) {
        err && console.log(err.toString());
    }
}

3.4 AsyncSorage常用API

点击进入查看官方文档

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!