๐ธ ๋ ๋๋ง ์ค๋ ์ท
state๊ฐ ์ ๋ฐ์ดํธ ๋๋ฉด ๋ ๋๋ง ํธ๋ฆฌ๊ฑฐ๊ฐ ๋น๊ฒจ์ง๋ค ์ค๋ช ํ ์ ์ด ์์ต๋๋ค.
๋ ๋๋ง ํธ๋ฆฌ๊ฑฐ๊ฐ ๋น๊ฒจ์ง ํ ์ปดํฌ๋ํธ์ ํธ์ถ์ด ์ด๋ฃจ์ด์ง๋๋ค.
๊ทธ๋ฐ๋ฐ ์ ์ํด์ผ ํ ์ ์ ์ปดํฌ๋ํธ๋ ํจ์๋ผ๋ ์ ์ ๋๋ค.
ํธ์ถ๋ ์ปดํฌ๋ํธ์ prop,์ด๋ฒคํธํธ๋ค๋ฌ,๋ก์ปฌ๋ณ์ ์ ๊ฐ์ state๋ค์ ๋ ๋๋ง ๋น์์ state๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฅผ ์ค๋ ์ท์ด๋ผ๊ณ ํํํฉ๋๋ค
function Component(){
let [count, setCount] = useState(0)
return(
<>
<button onClick={()=>{
setCount(count + 1)
setCount(count + 1)
setCount(count + 1)
}} CLICK </button>
</>
)
}
์ ์ฝ๋์ ๊ฒฝ์ฐ count๊ฐ์ 1์ด๋ฉ๋๋ค.
๊ทธ ์ด์ ๋, count๊ฐ ํธ์ถ๋์์ ๋,
ํ๋ฒ ๋ฐํ๋๋ฉด ์ฌ๋ผ์ง๋ ์ผ๋ฐ ๋ณ์์ ๋ฌ๋ฆฌ state๋ ํจ์ ์ธ๋ถ์ ์ ์ฅ๋๊ณ React๊ฐ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
โ** ๊ทธ๋ผ state๋ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธํ ๊น?**
๋ ๋๋ง์ด ๋ ๋ state๋ ํ ์๋ฃ๊ตฌ์กฐ๋ก ์๋๋ฉ๋๋ค.
์ ์ ํ ์๋ฃ๊ตฌ์กฐ์ ๋ํด ์ค๋ช ํด๋ณด์๋ฉด
ํ๋ ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ฝ๋ ์ ์ ์ ์ถํ์ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
์ด์๋ฐ๋ผ state๋ ๋ ๋๋ง๋๊ธฐ์ stateํ๋ผ๋ ๊ณณ์ ๋ด๊ฒจ์๋ค๊ฐ ๋จผ์ ์ง์ด๋ฃ์ ์๋ฃ๋จผ์ ๊บผ๋ด์ค๊ฒ ๋ฉ๋๋ค.
์ด ์ ์ ๊ธฐ์ตํ๋ฉด์ ์ฝ๋๋ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธ ๋๋์ง ์์๋ด ์๋ค.
function Component(){
let [count, setCount] = useState(0)
return(
<>
<button onClick={()=>{
setCount(count => count + 1) // 1
setCount(count => count + 1) // 2
setCount(count => count + 1) // 3
}} CLICK </button>
</>
)
}
์์ ์ค๋ช ์ด๋ ๋ค๋ฅด๊ฒ state๊ฐ ์ ๋ฐ์ดํธ ๋๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ state๊ฐ ์ ๋ฐ์ดํธ๋๋ ๊ฐ๋ ์ batching์ด๋ผ๋ ๊ฐ๋ ์ผ๋ก ์ค๋ช ์ด ๋ฉ๋๋ค.
๐ชตbatching
๋ฆฌ์กํธ๋ ์ฝ๋๋ฅผ ๋ ๋๋ง ํ๊ธฐ์ ์ด๋ฒคํธํธ๋ค๋ฌ์์ ์๋ ์ฝ๋์ด ์ ๋ถ ์๋๋ ๋ ๊น์ง ๋จผ์ ๊ธฐ๋ค๋ฆฐ ํ ๋ ๋๋ง์ ํฉ๋๋ค.
์ด๋ฐ ๊ฐ๋ ์ batching์ด๋ผํฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์ ์ฝ๋๋ ์ด๋ฒคํธ ์ฝ๋๊ฐ ์ ๋ถ ์๋๋ ๋ ๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ
count state๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๋ค์ ์ฝ๋์์ ์ ๋ฐ์ดํธ ๋ state๋ฅผ ๋ฐํํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
state๋ฅผ ํ ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ์ฌ๋ฌ๋ฒ ์ ๋ฐ์ดํธํ๋ ค๋ฉด n => n + 1 ๊ณผ๊ฐ์ ์์ ์ฌ์ฉํ๋๊ฒ์ด ์ข์ต๋๋ค
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [React] Zustand (4) | 2025.08.26 |
|---|---|
| [React] react-router v7+ (2) | 2025.08.13 |
| [React] sideEffect (0) | 2025.07.09 |
| [React] ๋ฆฌ์กํธ๊ฐ ๋ ๋๋ง ํ๋ ๋ฐฉ๋ฒ (1) | 2025.07.06 |
| [React] ๋ฆฌ์กํธ๋ ๋ญ๊น? (0) | 2025.07.06 |