88
99import { createAsyncStorage } from "@react-native-async-storage/async-storage" ;
1010import React , { useState } from "react" ;
11- import { Button , StyleSheet , Text , View } from "react-native" ;
11+ import { Alert , Button , StyleSheet , Text , View } from "react-native" ;
1212
1313function GetSet ( ) {
14- const [ storedNumber , setStoredNumber ] = React . useState ( "" ) ;
15- const [ needsRestart , setNeedsRestart ] = React . useState ( false ) ;
16- const [ storage ] = useState ( ( ) => createAsyncStorage ( StorageDb ) ) ;
14+ const [ storedNumber , setStoredNumber ] = React . useState < number | null > ( null ) ;
15+ const [ storage ] = useState ( ( ) => createAsyncStorage ( "test-database" ) ) ;
1716
18- React . useEffect ( ( ) => {
19- storage
20- . getItem ( STORAGE_KEY )
21- . then ( ( value ) => {
22- if ( value ) {
23- setStoredNumber ( value || "" ) ;
24- }
25- } )
26- . catch ( console . error ) ;
27- } , [ storage ] ) ;
17+ async function readCurrent ( ) {
18+ try {
19+ const value = await storage . getItem ( STORAGE_KEY ) ;
20+ setStoredNumber ( value ? Number ( value ) : null ) ;
21+ } catch ( e ) {
22+ console . error ( e ) ;
23+ }
24+ }
2825
2926 const increaseByTen = async ( ) => {
30- const newNumber = + storedNumber > 0 ? + storedNumber + 10 : 10 ;
27+ const newNumber = ( storedNumber ?? 0 ) + 10 ;
3128
32- await storage . setItem ( STORAGE_KEY , `${ newNumber } ` ) . catch ( console . error ) ;
33-
34- setStoredNumber ( `${ newNumber } ` ) ;
35- setNeedsRestart ( true ) ;
29+ try {
30+ await storage . setItem ( STORAGE_KEY , `${ newNumber } ` ) ;
31+ setStoredNumber ( newNumber ) ;
32+ await readCurrent ( ) ;
33+ } catch ( e ) {
34+ console . error ( e ) ;
35+ }
3636 } ;
3737
3838 const removeItem = async ( ) => {
3939 await storage . removeItem ( STORAGE_KEY ) . catch ( console . error ) ;
40- setNeedsRestart ( true ) ;
40+ await readCurrent ( ) ;
41+ } ;
42+
43+ const listAllKeys = async ( ) => {
44+ try {
45+ const keys = await storage . getKeys ( ) ;
46+ Alert . alert ( "keys" , keys . join ( ", " ) ) ;
47+ } catch ( e ) {
48+ console . error ( e ) ;
49+ }
4150 } ;
4251
52+ React . useEffect ( ( ) => {
53+ readCurrent ( ) ;
54+ } , [ storage ] ) ;
55+
4356 return (
4457 < View >
4558 < Text style = { styles . text } > Currently stored: </ Text >
4659 < Text style = { styles . text } > { storedNumber } </ Text >
4760 < Button title = "Increase by 10" onPress = { increaseByTen } />
4861 < Button title = "remove item" onPress = { removeItem } />
49- { needsRestart ? < Text > Hit restart to see effect </ Text > : null }
62+ < Button title = "list all keys" onPress = { listAllKeys } />
5063 </ View >
5164 ) ;
5265}
@@ -61,6 +74,5 @@ const styles = StyleSheet.create({
6174} ) ;
6275
6376export const STORAGE_KEY = "random" ;
64- const StorageDb = "test" ;
6577
6678export default GetSet ;
0 commit comments