/** * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * @flow * @providesModule AsyncStorageExample */ 'use strict'; var React = require('react'); var ReactNative = require('react-native'); var { AsyncStorage, PickerIOS, Text, View } = ReactNative; var PickerItemIOS = PickerIOS.Item; var STORAGE_KEY = '@AsyncStorageExample:key'; var COLORS = ['red', 'orange', 'yellow', 'green', 'blue']; class BasicStorageExample extends React.Component<{}, $FlowFixMeState> { state = { selectedValue: COLORS[0], messages: [], }; componentDidMount() { this._loadInitialState().done(); } _loadInitialState = async () => { try { var value = await AsyncStorage.getItem(STORAGE_KEY); if (value !== null){ this.setState({selectedValue: value}); this._appendMessage('Recovered selection from disk: ' + value); } else { this._appendMessage('Initialized with no selection on disk.'); } } catch (error) { this._appendMessage('AsyncStorage error: ' + error.message); } }; render() { var color = this.state.selectedValue; return ( {COLORS.map((value) => ( ))} {'Selected: '} {this.state.selectedValue} {' '} Press here to remove from storage. {' '} Messages: {this.state.messages.map((m) => {m})} ); } _onValueChange = async (selectedValue) => { this.setState({selectedValue}); try { await AsyncStorage.setItem(STORAGE_KEY, selectedValue); this._appendMessage('Saved selection to disk: ' + selectedValue); } catch (error) { this._appendMessage('AsyncStorage error: ' + error.message); } }; _removeStorage = async () => { try { await AsyncStorage.removeItem(STORAGE_KEY); this._appendMessage('Selection removed from disk.'); } catch (error) { this._appendMessage('AsyncStorage error: ' + error.message); } }; _appendMessage = (message) => { this.setState({messages: this.state.messages.concat(message)}); }; } exports.title = 'AsyncStorage'; exports.description = 'Asynchronous local disk storage.'; exports.examples = [ { title: 'Basics - getItem, setItem, removeItem', render(): React.Element { return ; } }, ];