zoukankan      html  css  js  c++  java
  • react native AsyncStorage的使用

      如果现在有一个需求,是要把用户的账号密码保存到本地,大家会怎么做的呢?如果在android中,我相信一大部分人会想到SharedPreferences,这是一个以键值对的形式进行存储的。那如果在react native中呢,有没有一个像SharedPreferences一样的轻量存储器呢?答案是有的---AsyncStorage。

      AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的。这是官网上对它的介绍。可以知道,这个asyncstorage也是以键值对的形式进行存储数据的。

      那么问题来了,该怎么使用这个呢?官网上说并不推荐我们直接用这个asyncstorage,而是进行抽象封装以后在进行调用。首先看一看我在项目中的用法。

    上代码:

     1 import React, {
     2     AsyncStorage
     3 }from 'react-native';
     4 
     5 class DeviceStorage {
     6     /**
     7      * 获取
     8      * @param key
     9      * @returns {Promise<T>|*|Promise.<TResult>}
    10      */
    11 
    12     static get(key) {
    13         return AsyncStorage.getItem(key).then((value) => {
    14             const jsonValue = JSON.parse(value);
    15             return jsonValue;
    16         });
    17     }
    18 
    19 
    20     /**
    21      * 保存
    22      * @param key
    23      * @param value
    24      * @returns {*}
    25      */
    26     static save(key, value) {
    27         return AsyncStorage.setItem(key, JSON.stringify(value));
    28     }
    29 
    30 
    31     /**
    32      * 更新
    33      * @param key
    34      * @param value
    35      * @returns {Promise<T>|Promise.<TResult>}
    36      */
    37     static update(key, value) {
    38         return DeviceStorage.get(key).then((item) => {
    39             value = typeof value === 'string' ? value : Object.assign({}, item, value);
    40             return AsyncStorage.setItem(key, JSON.stringify(value));
    41         });
    42     }
    43 
    44 
    45     /**
    46      * 更新
    47      * @param key
    48      * @returns {*}
    49      */
    50     static delete(key) {
    51         return AsyncStorage.removeItem(key);
    52     }
    53 }
    54 
    55 export default DeviceStorage;

    可以看到asyncstorage中存在有更删改查这些方法,当然,上面是把asyncstorage进行了封装,在其他地方调用的时候就可以作为一个工具进行调用了。

    调用方式:

    1 //appHotSearchTagList就是当时保存的时候所保存的key,而tags就是保存的值
    2 
    3 Storage.get('appHotSearchTagList').then((tags) => {
    4             this.setState({
    5                 tags: tags
    6             })
    7         });

    这里我只是贴出了一种获取数据的方式,其实另外的更新,删除,保存,方式都是差不多。

  • 相关阅读:
    SSH学习-struts2整合spring报错'Could not open ServletContext resource [/WEB-INF/applicationContext.xml]'
    YAML学习
    配置composer代理
    Windows下配置PHPUnit(pear已弃用,使用phpunit.phar)
    算法-第四版-练习1.3.9解答
    算法-第四版-练习1.3.10解答
    算法-第四版-练习1.3.11解答
    算法-第四版-练习1.3.12解答
    算法-第四版-练习1.3.13解答
    算法-第四版-练习1.3.14解答
  • 原文地址:https://www.cnblogs.com/huangjialin/p/6245122.html
Copyright © 2011-2022 走看看