
: State(์ํ)๋ผ๋ ๊ฑด ํ์ฌ ๊ฐ์ง๊ณ ์๋ ํํ๋ ๋ชจ์์ ์ ์ํ๋ ๊ฐ, ๋ณํํ ์ ์๋ ๋์ ์ธ ๊ฐ
์์
๊ฐ์ค๋ ์ธ์ง์ ๋ถ์ด ์ผ์ ธ์์ ๊ฒฝ์ฐ โก๏ธ ์ผ์ง ์ํ์ ๊ฐ์ค๋ ์ธ์ง
๊ฐ์ค๋ ์ธ์ง์ ๋ถ์ด ๊บผ์ ธ์์ ๊ฒฝ์ฐ โก๏ธ ๊บผ์ง ์ํ์ ๊ฐ์ค๋ ์ธ์ง
โ ๋ชจ๋ ์ฌ๋ฌผ๋ค์ ์์ ์ด ๊ฐ๋ ํ์ฌ์ State(์ํ)์ ๋ฐ๋ผ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ชจ์์ด๋ ๋ค๋ฅธ ๋์๋ค์ ํ๊ฒ๋๋ค. โก๏ธ State ๋ณ๊ฒฝ ๊ฐ๋ฅ
๊ฐ์ค๋ ์ธ์ง์ ๋ถ์ด ์ผ์ ธ์์ ๊ฒฝ์ฐ โก๏ธ ๋ถ ๋๊ธฐ โก๏ธ ๊บผ์ง ์ํ์ ๊ฐ์ค๋ ์ธ์ง
๊ฐ์ค๋ ์ธ์ง์ ๋ถ์ด ๊บผ์ ธ์์ ๊ฒฝ์ฐ โก๏ธ ๋ถ ์ผ๊ธฐ โก๏ธ ์ผ์ง ์ํ์ ๊ฐ์ค๋ ์ธ์ง
โ
React์์ State๋ ์ปดํผ๋ํธ์ ํ์ฌ ์ํ๋ฅผ ๋ณด๊ดํ๋ ๋ณ์
โ
๊ทธ๋์ State๋ฅผ ๊ฐ๋ ์ปดํผ๋ํธ๋ค์ State ๊ฐ์ ๋ฐ๋ผ์ ๋ ๋๋ง ๋๋ UI๊ฐ ๊ฒฐ์ ๋๋ค
import { useState } from "react";
: useState๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋จ์ ๋ด์ฅ ํจ์๋ฅผ ๋จผ์ ์ ์ธํด์ผํ๋ค.
const state = useState();
![]()
[undefined,๐] { 0 : undefined, 1: ๐()} ์ด๋ ๊ฒ ๋ฐฐ์ด๋์ด ์๋ค.๐ useState()์ 0์ ๋ฃ์ ๊ฒฝ์ฐ
const state = useState(0);: state ๊ฐ์ด
[0,๐]์ถ๋ ฅ๋๋ค.
: ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ฒดํ์ฌ ๊ทธ ๊ฐ์ ๊ฐ๋ณ ๋ณ์์ ๋ด์ ์ ์๊ฒ ํ๋ JavaScript ํํ์
const [state, setState] = useState(0);
โฌ๏ธ ์์ ๋ด์ฉ์ ์ถ๋ ฅํ ๊ฒฝ์ฐ
(return ๋ฌธ ์์ ์์ฑ) <h1>{state}</h1>: ํ์ฌ useState ์๋ 0์ด ๋ค์ด๊ฐ์๊ณ , state๋ useState์ ๊ฐ์ด ์ ์ฅ๋๋ฏ๋ก 0 ์ด ์ถ๋ ฅ๋๋ค.
const [state, setState] = useState(0);
return(
<>
<h1>{state}</h1>
<button onClick={() => {
setState(state + 1);
}}>
Click
</button>
</>
)
const [light, setLight] = useState("OFF"); โก๏ธ ํ์ฌ๊ฐ : off
return(
<h1>{light}</h1>
<button onClick{() => {
setLight(light === "ON"? "OFF" : "ON" โก๏ธ ๋ฐ๋ณต๋ฌธ (์ผํญ์ฐ์ฐ์ ์ฌ์ฉ)
}}>
Click
</button>
)
let light = "OFF";
return(
<h1>{light}</h1>
<button onClick{() => {
light = light === "ON"? "OFF" : "ON"
}}>
Click
</button>
)
light ๋ฅผ ์ผ๋ฐ ๋ณ์๋ก ๋ง๋ค์ด ์ฌ์ฉํ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋์ง์๋๋ค.
โ
React ์ปดํฌ๋ํธ๋ ์ผ๋ฐ ๋ณ์๊ฐ ์๋๋ผ const [light, setLight] = useState("OFF"); ํ์์ state ๊ฐ์ด ๋ณํํ์ ๋๋ง ๋ฆฌ๋ ๋๋ง์ด ๋๋ค.
setLight ์ด ๋ถ๋ถ์ด๋ฏ๋ก light๋ฅผ ์์ ํด๋ดค์ reRender ๋์ง ์๋๋ค.setState(state + 1) ๊ณ์ ์
๋ ฅํ๋ค๊ณ ํด์ ๋ฒํผ ํ๋ฒ ๋๋ ์ ๋ ์
๋ ฅํ ์๋๋ก ์ฆ๊ฐ๋์ง์์ ์ ์๋ค.์ด๋ด ๊ฒฝ์ฐ
setState((state) => state + 1);์ฒ๋ผ ํจ์์ ์ธ์๋ก ์ ๋ฌํ์ฌ ์์ฑํ ์ ์๋ค.