์ค๋์ ํท๊ฐ๋ฆฌ๋ ๊ฐ๋ ์ธ ํด๋ก์ ์ ๋ํด ์ ๋ฆฌํด๋ดค๋ค.
ํด๋ก์ ๋ ํจ์๊ฐ ์์ ์ด ์์ฑ๋ ํ๊ฒฝ์ ๊ธฐ์ตํ๋ ํน์ฑ์ด๋ค.
์ฆ, ํจ์ ์์์ ์ ์ธ๋ ๋ณ์๋ค์ ํจ์๊ฐ ์คํ๋ ๋๋ง๋ค ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์ด์ค๋ค.
์ฌ๊ธฐ์ inner
ํจ์๋ outer
ํจ์ ๋ด๋ถ์ ์ ์๋์ด ์๋ค.
์ด๋ inner
ํจ์๋ ์์ ์ด ์์ฑ๋ ์ค์ฝํ, ์ฆ outer
์ ๊ธฐ์ตํ๊ณ , outer
ํจ์์ ํธ์ถ์ด ์๋ฃ๋ ์ดํ์๋ ๊ทธ ์ค์ฝํ์ ์ ๊ทผํ ์ ์๋ค.
์๋ ์ฝ๋์์ outer
์ 10์ด ํ ๋น๋๋ฉฐ inner
๋ฅผ ๋ฐํํ๋ค. ์ดํ outer ํจ์๋ ์ข
๋ฃํ๋ค.
inner
๋ฅผ ํ ๋น๋ฐ์ fn
์ 5๋ฅผ ํ ๋นํ๋ฉด inner(5)
๋ฅผ ์คํํ๋ค.
inner
์๋ ๋งค๊ฐ๋ณ์ x
๊ฐ ์กด์ฌํ์ง ์์ง๋ง, ์์ ์ด ์์ฑ๋ ํ๊ฒฝ์ ๊ธฐ์ตํด outer
์ x
๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
function outer(x) {
function inner(y) {
return x + y; // inner๋ outer์ x๋ฅผ ๊ธฐ์ต
}
return inner;
}
const fn = outer(10); // outer ์คํ -> inner ๋ฐํ -> fn์ inner๋ฅผ ์ฐธ์กฐ
console.log(fn(5)); // inner(5) ํธ์ถ -> x = 10, y = 5 -> 10 + 5 = 15
๊ฐ๋จํ๊ฒ ์ ๋ฆฌ
fn
์inner
ํจ์ ์์ฒด๋ฅผ ์ฐธ์กฐํ๋ค.fn(5)
๋ฅผ ํธ์ถํ๋ฉดinner(5)
๊ฐ ์คํ๋๋ค.inner
๋outer
๊ฐ ๋ฐํ๋ ๋ ํด๋ก์ ๋ฅผ ํตํดouter
์ ์ค์ฝํ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์x
๋ฅผ ๊ธฐ์ตํ๊ณ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ - ํด๋ก์ ๋ฌธ์
useState์์ ํด๋ก์ ๋ ์ด๋ค์์ผ๋ก ์ฌ์ฉ๋์์๊น?
๋ฆฌ์กํธ์ useState
ํ
์ ๋ด๋ถ์ ์ผ๋ก ํด๋ก์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค.
useState
๋ฅผ ์์ฃผ ๊ฐ๋จํ๊ฒ ๊ตฌํํด๋ดค๋ค.
function useState(initialValue) {
let storedValue = initialValue;
const getState = () => {
return storedValue;
};
const setState = (newValue) => {
storedValue = newValue;
};
return [getState, setState];
}
getState
: ํ์ฌ ์ํ ๊ฐ์ ๋ฐํsetState
: ์ํ ๊ฐ ์ ๋ฐ์ดํธ
๋ฆฌ์กํธ์์ useState ์ฌ์ฉ ์์
const [count, setCount] = useState(0)
count
๋ ์ด๊ธฐ๊ฐ์ผ๋ก 0์ ๊ฐ์ง๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ setCount
๋ฅผ ํตํด ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์ด๊ธฐ ๊ฐ ํ ๋น:
useState(0)
์ด ์คํ๋๋ฉด,storedValue
๋ 0์ผ๋ก ์ด๊ธฐํ ๋๋ค. - ์ํ ๊ฐ ๋ณ๊ฒฝ: ๋ง์ฝ
setCount(1)
์ ์คํํ๋ฉด,storedValue
๊ฐ 1๋ก ๋ณ๊ฒฝ๋๋ค. ์ด๋ getState๋ฅผ ํธ์ถํ๋ฉด, ๋ณ๊ฒฝ๋ ์ํ์ธ 1์ ๋ฐํํ๋ค.
ํด๋ก์ ์ ์ญํ
์ ์ฝ๋์์ ์ํ๋ storedValue
๋ผ๋ ๋ณ์์ ์ ์ฅ๋๋ค. ์ด ๋ณ์๋ useState
ํจ์๊ฐ ์คํ๋ ๋ ๋ง๋ค ๊ณ ์ ํ๊ฒ ์์ฑ๋๋ฉฐ, ๊ทธ ๊ฐ์ getState
์ setState
ํจ์๊ฐ ๊ธฐ์ตํ๋ค.
- ์ธ๋ถ์์ ์ง์
storedValue
์ ์ ๊ทผํ ์ ์๋ค. getState
์setState
๋useState
ํจ์์ ์คํ ์ปจํ ์คํธ๋ฅผ ๊ธฐ์ตํ๋ ํด๋ก์ ์ด๋ฏ๋ก,storedValue
์ ์ ๊ทผํ๊ณ ์์ ํ ์ ์๊ฒ ๋๋ค.- ๋ฐ๋ผ์, ์ํ ๊ฐ์ ํจ์ ์ธ๋ถ์์ ์ง์ ์์ ํ ์ ์๊ณ ,
setState
๋ฅผ ํตํด์๋ง ๋ณ๊ฒฝ๊ฐ๋ฅํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ Deep Dive ์ฑ ์์๋ ํด๋ก์ ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํ๋ค.
“ํด๋ก์ ๋ ์ํ๋ฅผ ์์ ํ๊ฒ ๋ณ๊ฒฝํ๊ณ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์ด๋ ์ํ๋ฅผ ์์ ํ๊ฒ ์๋ํ๊ณ ํน์ ํจ์์๊ฒ๋ง ์ํ ๋ณ๊ฒฝ์ ํ์ฉํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.”
๋ฆฌ์กํธ์์ useState
ํ
์ ํด๋ก์ ๋ฅผ ์ฌ์ฉํด ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค.
ํด๋ก์ ๋ฅผ ํตํด ์ํ ๊ฐ์ setState
๋ก๋ง ๋ณ๊ฒฝํ ์ ์๊ฒ ๋์ด ์์ ํ๊ฒ ์ ์ง๋๋ฉฐ, ์ํ ๊ฐ์ ์ธ๋ถ์์ ์ง์ ์์ ํ ์ ์๋๋ก ๊ด๋ฆฌ๋๊ณ ์๋ค.
'Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ ์ปจํ ์คํธ์ ๋์ ๊ณผ์ (0) | 2025.01.13 |
---|---|
Map๊ณผ ์ผ๋ฐ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ๊ฐ์? (1) | 2024.10.03 |