美文网首页
ReactNative 数据存储

ReactNative 数据存储

作者: 天津卓朗科技 | 来源:发表于2019-06-20 18:05 被阅读0次

AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的。它用来代替LocalStorage。<br />我们推荐您在AsyncStorage的基础上做一层抽象封装,而不是直接使用AsyncStorage。<br />译注:推荐由React Native中文网封装维护的react-native-storage模块,提供了较多便利功能。<br />基本用法:

//必须在使用storage前注册,建议放在入口文件里,例如index.android.js
import Storage from 'react-native-storage';
var storage = new Storage({
    // 最大容量,默认值1000条数据循环存储
    size: 1000,
    // 存储引擎:对于RN使用AsyncStorage,对于web使用window.localStorage
    // 如果不指定则数据只会保存在内存中,重启后即丢失
    storageBackend: AsyncStorage,
    // 数据过期时间,默认一整天(1000 * 3600 * 24 毫秒),设为null则永不过期
    defaultExpires: null,
    // 读写时在内存中缓存数据。默认启用。
    enableCache: true,
})
global.storage = storage;   //全局变量

储存:

storage.save({
                    key: 'loginState',  // 注意:请不要在key中使用_下划线符号!
                    rawData: {
                        userid: userid,
                        token: token
                    }
                });

读取:

storage.load({
            key: 'loginState',
        }).then(ret => {
            // 如果找到数据,则在then方法中返回
            // 注意:这是异步返回的结果(不了解异步请自行搜索学习)
            // 你只能在then这个方法内继续处理ret数据
            // 而不能在then以外处理
            // 也没有办法“变成”同步返回
            // 你也可以使用“看似”同步的async/await语法
            this.setState({
                logined: true,
                username: ret.loginName,
                imageurl: ret.imageUrl
            });
        }).catch(err => {
            //如果没有找到数据且没有sync方法,
            //或者有其他异常,则在catch中返回
            console.log('未登录')
            this.setState({
                logined: false
            });
        })

修改:

//暂时未提供update的方法,只能读出来再存
storage.load({
            key: 'loginState',
        }).then(ret => {
            ret.bindMail = mail;
            storage.save({
                key: 'loginState',  // 注意:请不要在key中使用_下划线符号!
                rawData: ret
            })
        }).catch(err => {
            //如果没有找到数据且没有sync方法,
            //或者有其他异常,则在catch中返回
            console.log(err);
            Toast.show('获取个人信息失败,请重新登录', Toast.SHORT);
        })

删除:

storage.remove({
            key: 'loginState'
        });

相关文章

  • ReactNative 数据存储

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

  • ReactNative之AsyncStorage本地存储

    ReactNative之本地存储 在RN开发中,持久化存储数据,可以使用AsyncStorage,对原生的API进...

  • ReactNative之本地存储

    前言 眼看很多公司都开始尝试使用ReactNative,达到跨平台开发,最近也写了很多文章,希望让更多想了解的同学...

  • Android ContentProvider(一)

    Android数据存储(一) Android数据存储(二) Android数据存储(三) Android数据存储(...

  • day07

    Android的存储方式 使用SharedPreferences存储数据 文件存储数据 SQLite数据库存储数据...

  • zookeeper数据存储及查看hbase信息

    zookeeper数据存储及查看hbase信息 1.zookeeper数据存储: 1.1内存数据存储、磁盘数据存储...

  • SharedPreferences存储数据

    Android的存储方式 使用SharedPreferences存储数据文件存储数据SQLite数据库存储数据使用...

  • React-Native AsyncStorage

    ReactNative之本地存储 AsyncStorage 是一个简单的、异步的、持久化的 Key-Value 存...

  • iOS数据存储

    iOS数据存储 数据存储

  • 03Stack栈

    数据结构=数据+存储方式+操作数据 存储什么数据?如int,string类型存储方式 如何组织数据,数据之...

网友评论

      本文标题:ReactNative 数据存储

      本文链接:https://www.haomeiwen.com/subject/xhojqctx.html