AsyncStorage
是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的。它用来代替LocalStorage。
我们推荐您在AsyncStorage的基础上做一层抽象封装,而不是直接使用AsyncStorage
。
译注:推荐由React Native中文网
封装维护的react-native-storage
模块,提供了较多便利功能。
React-Native 开发与原生开发交互的时候,Native端也需要取AsyncStorage存储的value
iOS Native端
iOS存储路径为:
Documents 目录下的RCTAsyncLocalStorage_XXX/manifest.json 文件,保存的文档实质就是个json 文本
取值方式有如下几种:
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* thepath = [paths lastObject];
thepath = [thepath stringByAppendingPathComponent:@"RCTAsyncLocalStorage_V1/manifest.json"];
NSLog(@"目录:%@", thepath); //第一种方法: NSFileManager实例方法读取数据
NSFileManager* fm = [NSFileManager defaultManager];
NSData* data = [[NSData alloc] init];
data = [fm contentsAtPath:thepath];
NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
//第二种方法: NSData类方法读取数据 data = [NSData dataWithContentsOfFile:thepath];
NSLog(@"NSData类方法读取的内容是:%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
//第三种方法: NSString类方法读取内容
NSString* content = [NSString stringWithContentsOfFile:thepath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"NSString类方法读取的内容是:\n%@",content);
Android Native端
Android存储方式为使用sqlite3
/data/data/<package name>/database
文件名称为RKStorage
注:在网上查的信息,大多说的是 AsyncStorage
存储,类似于sharedpreference方式存储。但经过考证发现不是,存储方式sqlite。这个可能跟react-native版本不同有关系,本文使用的版本为
"react": "16.3.0-alpha.1", "react-native": "0.54",