An asynchronous, unencrypted, persistent, key-value storage system for React Native.
$ yarn add @react-native-community/async-storage
- React Native 0.60+
CLI autolink feature links the module while building the app.
Use CocoaPods to add the native RNAsyncStorage
to your project:
$ npx pod-install
- React Native <= 0.59
$ react-native link @react-native-community/async-storage
Note: For macOS
and Windows
the manual linking is currently the only linking option.
See docs for manual linking guide.
React Native 0.60+ comes with autolinking
feature, which automatically links Native Modules in your project.
In order to get it to work, make sure you unlink
Async Storage
first (if you had linked it before):
$ react-native unlink @react-native-community/async-storage
AsyncStorage can only store string
data, so in order to store object data you need to serialize it first.
For data that can be serialized to JSON you can use JSON.stringify()
when saving the data and JSON.parse()
when loading the data.
import AsyncStorage from '@react-native-community/async-storage';
setItem()
is used both to add new data item (when no data for given key exists), and to modify exiting item (when previous data for given key exists).
const storeData = async (value) => {
try {
await AsyncStorage.setItem('@storage_Key', value)
} catch (e) {
// saving error
}
}
const storeData = async (value) => {
try {
const jsonValue = JSON.stringify(value)
await AsyncStorage.setItem('@storage_Key', jsonValue)
} catch (e) {
// saving error
}
}
getItem
returns a promise that either resolves to stored value when data is found for given key, or returns null
otherwise.
getData = async () => {
try {
const value = await AsyncStorage.getItem('@storage_Key')
if(value !== null) {
// value previously stored
}
} catch(e) {
// error reading value
}
}
getData = async () => {
try {
const jsonValue = await AsyncStorage.getItem('@storage_Key')
return jsonValue != null ? JSON.parse(jsonValue) : null;
} catch(e) {
// error reading value
}
}
See docs for API and more examples or advanced usages.
Using Jest for testing? Make sure to check out docs on how to integrate it with this module.
See the CONTRIBUTING file for how to help out.
MIT