react-native AsyncStorage 数据持久化方案

1,AsyncStorage介绍

  • AsyncStorage 是一个简单的、异步的、持久化的 Key-Value 存储系统,它对于 App 来说是全局性的。它用来代替 LocalStorage。
  • 由于它的操作是全局的,官方建议我们最好针对 AsyncStorage 进行一下抽象的封装再使用,而且不是直接拿 AsyncStorage 进行使用。
  • AsyncStorage 存储的位置根据系统的不同而有所差异。iOS 中的存储类似于 NSUserDefault,通过 plist 文件存放在设备中。Android 中会存储在 RocksDB 或者 SQLite 中,取决于你使用哪个。

2,常用接口

根据键来获取值,获取的结果会放在回调函数中:

static getItem(key: string, callback:(error, result))

根据键来设置值:

static setItem(key: string, value: string, callback:(error))

根据键来移除项:

static removeItem(key: string, callback:(error))

获取所有的键:

static getAllKeys(callback:(error, keys))

设置多项,其中 keyValuePairs 是字符串的二维数组,比如:[['k1', 'val1'], ['k2', 'val2']]:

static multiSet(keyValuePairs, callback:(errors))

获取多项,其中 keys 是字符串数组,比如:['k1', 'k2']:

static multiGet(keys, callback:(errors, result))

删除多项,其中 keys 是字符串数组,比如:['k1', 'k2']:

static multiRemove(keys, callback:(errors))

清除所有的项目:

static clear(callback:(error))

3,注意事项

需要注意的是,在使用AsyncStorage的时候,setItem里面传入的数组或字典等对象需要使用JSON.stringtify()方法把他们解析成JSON字符串,反过来,在getItem方法里获取数组或字典等对象的时候需要使用JSON.parse方法将他们解析成对象。使用方法如下:

module.exports = {
  /**保存信息*/
  save(key, value) {
    return AsyncStorage.setItem(key, JSON.stringify(value));
  },
  /**取数据*/
  getValue(key, callback) {
    return AsyncStorage.getItem(key).then((value) => {
      const jsonValue = JSON.parse(value);
      callback(jsonValue);
      return jsonValue;
    });
  },
  /**删除信息*/
  delete(key) {
    return AsyncStorage.removeItem(key);
  },
};

调用方法如下:

saveData(){
  let name= getValue('name',(n)=>{
    if (n!=undefined) {
      showMsg(n);
      delete('name');
      save('name','wang')
    }else{
      showMsg('没有数据');
      save('name','li')
    }
  })
}

.

猜你喜欢

转载自www.cnblogs.com/crazycode2/p/9382101.html
今日推荐