๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

FE/React

[React] State๋ž€? ๋ณ€๊ฒฝ๋˜๋Š” ๋™์ ์ธ ๊ฐ’

๐Ÿ“Œ  State ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? 

- state๋ž€ ๋ฆฌ์•กํŠธ์—์„œ ์ด๋ฒคํŠธ์— ์˜ํ•ด ๋ณ€๊ฒฝ๋˜๋Š” ๋™์ ์ธ ๊ฐ’์ž…๋‹ˆ๋‹ค.

- ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋Š” onClick ์ด๋ฒคํŠธ, input ์ž…๋ ฅ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” onChange ์ด๋ฒคํŠธ์— ์˜ํ•ด ์ž…๋ ฅ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 
- props๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„ค์ •ํ•˜๋Š” ๊ฐ’์ด๋ฉฐ ์ฝ๊ธฐ ์ „์šฉ์ด์ง€๋งŒ, state๋Š” ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
- ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” 'useState'๋ผ๋Š” Hook ์„ ์‚ฌ์šฉํ•˜์—ฌ state๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 


๐Ÿ“Œ  State ์‚ฌ์šฉํ•˜๊ธฐ : useState 

ํ•จ์ˆ˜ํ˜•(function) ์ปดํฌ๋„ŒํŠธ์—์„œ { useState } Hooks๋ฅผ ํ™œ์šฉํ•ด state๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

useState๋ž€ ๋ฆฌ์•กํŠธ์˜ ๊ธฐ๋ณธ Hook ์ค‘ ํ•˜๋‚˜๋กœ, ์ปดํฌ๋„ŒํŠธ์—์„œ state๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โ€ป ๊ธฐ๋ณธํ›… : useState, useEffect, useContext

 

•  ๋ฐ˜๋“œ์‹œ setState ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ 

state ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ setState๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

setState๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ, state๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด useState๊ฐ€ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜๊ณ , ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋“ค๊นŒ์ง€ ๋ฆฌ๋ Œ๋”๋ง์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ง์ ‘ state๋ฅผ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฆฌ์•กํŠธ๊ฐ€ render ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋„ ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

โšก useState ํ˜•ํƒœ 

const [ state, setState ] = useState(initialState)
const [ ์ƒํƒœ, ์„ธํ„ฐํ•จ์ˆ˜ ] = useState(์ดˆ๊ธฐ๊ฐ’) 

useState ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐฐ์—ด [state, setState] ์ด ๋ฆฌํ„ด๋ฉ๋‹ˆ๋‹ค.

๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋Š” ํ˜„์žฌ ์ƒํƒœ(state)์ด๊ณ , ๋‘๋ฒˆ์งธ ์š”์†Œ๋Š” ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์–ด์ฃผ๋Š” setState ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ด๋ฉ๋‹ˆ๋‹ค. 

useState ํ•จ์ˆ˜ ์ธ์ž์—๋Š” ์ƒํƒœ์˜ ์ดˆ๊ธฐ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐ, ์ƒ๋žต ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค :D 

 

โšก useState ์‚ฌ์šฉํ•˜๊ธฐ : input๊ฐ’์— ๋”ฐ๋ผ ๋ณ€ํ•˜๋Š” ๋ฉ”์‹œ์ง€

์•„๋ž˜ ์ฝ”๋“œ๋Š”  input๊ฐ’์— ๋”ฐ๋ผ ๋ณ€ํ•˜๋Š” ๋ฉ”์‹œ์ง€ ๋‚˜ํƒ€๋‚ด๊ธฐ 

input ์ด๋ฒคํŠธ๋กœ ๋ฐœ์ƒํ•œ ๋ฐ์ดํ„ฐ(e.target.value)๋ฅผ message ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.  

 

1) useState๋กœ message ๊ด€๋ฆฌ : ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •,  ์„ธํ„ฐํ•จ์ˆ˜(setMessage) ์„ ์–ธ 

const [message, setMessage] = useState('');

2) event ๋กœ ๋ฐœ์ƒํ•œ value ๊ฐ’์„ Message์— ๋Œ€์ž…ํ•ด์„œ state๋ฅผ ๊ฐฑ์‹ ํ•˜๊ธฐ  

setMessage(e.target.value); 

 

import React, {useState} from "react";

function MyComponent() {

    const [message, setMessage] = useState(''); 
    const onChange = (e) => {
        setMessage(e.target.value);
    }
    return(
        <div>
            <input onChange={onChange}/>
            <p>{message}</p>
        </div>

    );
}

export default MyComponent;

 

• ์‹คํ–‰๊ฒฐ๊ณผ