react-native中的storage存储

  1. 安装:
    npm install react-native-storage --save
  2.  

    引入:import Storage from 'react-native-storage';

  3. 初始化:
    import { AsyncStorage } from 'react-native';
    
    var storage = new Storage({
      // 最大容量,默认值1000条数据循环存储
      size: 1000,
    
      // 存储引擎:对于RN使用AsyncStorage,对于web使用window.localStorage
      // 如果不指定则数据只会保存在内存中,重启后即丢失
      storageBackend: AsyncStorage,
        
      // 数据过期时间,默认一整天(1000 * 3600 * 24 毫秒),设为null则永不过期
      defaultExpires: 1000 * 3600 * 24,
        
      // 读写时在内存中缓存数据。默认启用。
      enableCache: true,
        
      // 如果storage中没有相应数据,或数据已过期,
      // 则会调用相应的sync方法,无缝返回最新数据。
      // sync方法的具体说明会在后文提到
      // 你可以在构造函数这里就写好sync的方法
      // 或是写到另一个文件里,这里require引入
      // 或是在任何时候,直接对storage.sync进行赋值修改
      sync: require('./sync')  // 这个sync文件是要你自己写的
    }) 
    global.storage = storage;
    
    // 这样,在此**之后**的任意位置即可以直接调用storage
    // 注意:全局变量一定是先声明,后使用
    // 如果你在某处调用storage报错未定义
    // 请检查global.storage = storage语句是否确实已经执行过了
    4. 保存和读取:

    // 使用key来保存数据。这些数据一般是全局独有的,常常需要调用的。

    保存:

    storage.save({
        key: 'loginState',  // 注意:请不要在key中使用_下划线符号!
        data: { 
          from: 'some other site',
          userid: 'some userid',
          token: 'some token'
        },

    读取:

    //load 读取
      storage.load({
        key: 'user',
        id: '1001'
      }).then(ret => {
        // 如果找到数据,则在then方法中返回
        console.log(ret.userid);
      }).catch(err => {
        // 如果没有找到数据且没有sync方法,
        // 或者有其他异常,则在catch中返回
    	console.warn(err.message);
    	switch (err.name) {
    	    case 'NotFoundError':
    	        // TODO;
    	        break;
            case 'ExpiredError':
                // TODO
                break;
    	}
      })

    批量读取数据:

    storage.getBatchData([
    	{ key: 'loginState' },
    	{ key: 'checkPoint', syncInBackground: false },
    	{ key: 'balance' },
    	{ key: 'user', id: '1009' }
    ])
    .then(results => {
      results.forEach( result => {
        console.log(result); 	
      })
    })

猜你喜欢

转载自blog.csdn.net/khadijiah/article/details/102784155