RN) AsyncStorage

소정·2023년 6월 5일
0

ReactNative

목록 보기
13/17

https://reactnative.dev/docs/asyncstorage
더이상 지원하지 않음

https://reactnative.directory/?search=storage

커뮤니티로 넘김

AsyncStorage Library

  • Android의 SharedPerferences 와 비슷한 기능

// ## AsyncStorage Library - Android의 SharedPerferences 와 비슷한 기능

import React, { useState } from "react";
import { View, Text, TextInput, Button, StyleSheet, Alert } from "react-native";
import AsyncStorage from "@react-native-async-storage/async-storage";

export default function Main() : JSX.Element {

    // 텍스트 인풋 요소의 글씨가 변경될 떄 마다 저장하는 state 변수
    const [inputText , setInputText] = useState<string>('')

    // 저장된 텍스트 보여주는 state 변수
    const [data, setData] = useState<string>('Result')

    const changeText = (value:string) => {
        setInputText(value)
    }

    //save data to local storae method
    const saveData = () => {
        //텍스트인풋 요소에 있는 글씨를 AsyncStorage에 저장
        //값 저장 [key-value] 쌍으로 저장

        //텍스트 인풋 요소의 글씨가 변경될 떄 마다 저장하는 state 변수 필요 : inputText

        //비동기 작업이기에 pomiss문법인 .then() 메소드 사용
        AsyncStorage.setItem("Data",inputText).then( ()=> Alert.alert('saved Data') ) 
        setInputText("")

    }

    //load data to local storae method
    const loadData = async ()=> {
        //비동기로 AsyncStorage에 "Date"라는 키의 value값을 읽어오기
        //async-await 문법으로 비동기 작업을 동기 작업처럼 처리하기
        let value  = await AsyncStorage.getItem("Data") // 얘는 리턴을 nullable로 온다
        if(value != null) setData(value) //null 체크 필수~!~!
    }

    return (
        <View style={style.root}>

            {/* 저장할 데이터 입력할 컴포넌트 */}
            <TextInput
                style={style.TextInput}
                placeholder="Enter some text here"
                value={ inputText }
                onChangeText={changeText}
            ></TextInput>
            <Button title="save data" onPress={saveData}></Button>

            <View style={{marginTop : 16}}></View>

            <Button title="load data" color={'pink'} onPress={loadData}></Button>
            {/* 변경된 텍스트 보여주려면 무조건 변수 */}
            <Text style={style.text}> {data} </Text>
        </View>
    )

}

const style = StyleSheet.create({
    root : {
        padding : 16,
        flex : 1
    },
    TextInput : {
        paddingLeft : 16,
        paddingRight : 16,
        borderWidth : 1,
        borderRadius : 8,
        borderColor : 'black',
        marginBottom : 16,
    },
    text : {
        padding : 8,
        marginTop : 16,
        color : "black",
        fontSize : 24,
        fontWeight : "bold",
    }
})
profile
보조기억장치

0개의 댓글