๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ฒ์์๋ ์๋ ์๋ฌธ์ด ๊ฐ์๊ธฐ ์๊ฒผ์๋ค.
์ ๋ฆฌ์กํธ๋ useState๋ผ๋ ํ ์ ์ฌ์ฉํด์ ์ํ๊ด๋ฆฌ๋ฅผ ํ๋๊ฒ์ธ๊ฐ
๋ฌผ๋ก ํ ์ ์ฌ์ฉํด์ ๋ผ์ดํ์ฌ์ดํด์ ์กฐ์ํ ์ ์๊ฒ ํ์ฌ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ง์์ฃผ๊ณ , ๋ด๊ฐ ์ํ๋ ์์ ์ ์ํ๋ ๋์์ ํ๋๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ผ ๊ฑฐ๋ค.
ํ์ง๋ง, ์!! ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์ ์ฌ์ฉํ๋ฏ์ด ์ฌ์ฉํ๋ฉด ์๋๋๊ฒ์ด๋ ์ด๊ฒ ๋ฌธ๋ ๊ถ๊ธํด์ก๋ค
์ด์
state๋ immutable(๋ถ๋ณ์ฑ)์ ์ ์งํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ปดํฌ๋ํธ๋ ํ์ฌ์ this.state์ setState๋ฅผ ๋น๊ตํด์ ์
๋ฐ์ดํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ง render ํจ์๋ฅผ ํธ์ถํ๋๋ฐ, state๋ฅผ ์ง์ ์์ ํ๊ฒ ๋๋ฉด ๋ฆฌ์กํธ๊ฐ render ํจ์๋ฅผ ํธ์ถํ์ง ์์ ์ํ ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ ๋ ๋๋ง์ด ์ผ์ด๋์ง ์์ ์ ์๋ค.
์ํ ๋ณ๊ฒฝ์ ์ถ์ ํ๊ณ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ๊ตฌ์ฑ์์๋ฅผ ๋ค์ ๋ ๋๋งํ๋ ค๋ฉด setState๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
๋ถ๋ณ์ฑ์ ์ ์งํด์ผํ๋ ์ด์ ๋ ์๋์ ๊ฐ๋ค.
- setState๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ state๊ฐ ์ง์ ์์ ๋์ด ์ฌ๋ฌ๋ฒ ์ํ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๊ฒฝ์ฐ, ์ด์ ์ ๋ฐ์ดํธ ๋ด์ฉ์ด ๋ค์ ์ ๋ฐ์ดํธ ๋ด์ฉ์ ๋ฎ์ด ์ฐ์ฌ์ง ์๊ฐ ์์ด ์์์น ๋ชปํ ๊ณณ์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ ํ ์ ์์ต๋๋ค.
- PureComponent์์ ๋์ํ์ง ์์ต๋๋ค. PureComponent๋ this.state์ setState๋ฅผ ๋น๊ตํด ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ง renderํจ์๋ฅผ ํธ์ถํด ์ค๋๋ค. ์ด๋, state๋ฅผ ์ง์ ์์ ํ๊ฒ๋๋ฉด ๊ธฐ์กด์ this.state์ setState๊ฐ ๋์ผํ๋ฏ๋ก ๋ฆฌ์กํธ๋ renderํจ์๋ฅผ ํธ์ถํ์ง ์์ต๋๋ค.
๊ฒฐ๋ก , state๋ ๊ผญ ๋ถ๋ณ์ฑ์ ์ ์งํ๋๋ก ์ง์ ์์ ํ์ง ๋ง์!
๐ค ์ด์ ๋ ์๊ฒ ๋๋ฐ ๊ทธ๋์ setState๋ง๊ณ state๋ฅผ ์ง์ ๋ณ๊ฒฝํด์ฃผ๋ฉด ์ ํ๋ฉด ๊ฐฑ์ ์ด ์๋ ๊น?
๋ณธ๋ก ๋ถํฐ ์ด์ผ๊ธฐ ํ์๋ฉด state์ ์ ์ฅ๋ฐฉ์์ด '๊ฐ์ฒด'์ด๊ธฐ ๋๋ฌธ์ด๋ค
๊ทธ๋์ ๋ณ๊ฒฝํ state๊ฐ ํ๋ฉด์ ๋ณด์ด๊ฒ ๋๋ ค๋ฉด Update์ํ์ ๋ค์ด๊ฐ์ผ ํ๋๋ฐ ๊ทธ๋ฌ๋ ค๋ฉด...
state ๋๋ Props๊ฐ ๋ณ๊ฒฝ ๋์ด์ผํ๋ค.
์ด์ ๊ด๋ จํด์ useState๊ฐ const๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๊ฐ์ด ์ ๋ฆฌํ ์ ์๋๋ฐ, count ๋ณ์๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ๊ฑด๋ฐ ์ let์ด ์๋๊น? ๋ผ๊ณ ์๊ฐ ํ ์ ์๋ค.
์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง๋๋ฉด ํจ์๊ฐ ๋ค์ ์คํ๋์ด ์ scope๋ฅผ ๋ง๋ค๊ณ , count๋ณ์๋ ์๋ก ๋ง๋ค๊ฒ ๋๊ณ , ์ด๋ ์ด์ ๋ณ์์ ์๊ด์ด ์๊ฒ ๋๋ค. ๊ทธ๋์ const๋ก ์ ์ธ๋ count ๋ณ์๋ ๋์ผํ scope์์ ๋ค์ ํ ๋นํ๋ ๊ฒ์ ๋ง์ ์ ์๋ค๊ณ ํ๋ค!
const [count, setCount] = useState(0);
state๊ฐ ๋ณ๊ฒฝ๋๋ฉด update๊ฐ ๋ผ์ผ ํ๋๊ฑฐ ์๋๊ฐ? ๋ผ๊ณ ์๊ฐํ ์ ์์ผ๋, ๋ฆฌ์กํธ๊ฐ ์ด ๊ฐ์ด ๋ณ๊ฒฝ ๋๋ค๋ ๊ฒ์ ํ๋จํ๋ ๊ธฐ์ค์ด ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ด๊ธฐ ๋๋ฌธ์, ๊ฐ์ฒด์ ์ฃผ์๊ฐ ๋ณ๊ฒฝ๋์ง ์๊ณ ๋ด๋ถ์ ๊ฐ๋ง ๋ฐ๋๋ฉด ๋ฐ๋๊ฒ์ผ๋ก ์ธ์์ ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋๋ฌธ์ ์ง์ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ํ ๋น ํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒ์ด๋ฉฐ ๊ทธ๊ฒ์ ์ํด setState(), useState() ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
setState()์ ํน์ง
1. ๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋๊ธฐ๋ก ๋์ํ๋ค.
2. ์ฐ์์ ์ผ๋ก ํธ์ถํ์ ๋ ๋ฆฌ์กํธ ๋ด๋ถ์ ์ผ๋ก๋ BATCH ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
3. state ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ค ์ ์์ ๋ฟ๋ง ์๋๋ผ ์๋ก์ด state๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์ธ์๋ก ๋๊ฒจ์ค ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก setState()ํจ์๋ state๋ฅผ ๋ณ๊ฒฝํ๊ณ state๊ฐ ํฌํจ๋ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด๊ฒ ๋๊ธฐ์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ด ์๋๋ผ ๋น๋๊ธฐ์ ์ผ๋ก ๋์ํจ์ ์ฃผ๋ชฉํด์ผํ๋ค(= setState()๋ฅผ ์คํํ์๋ง์ ๋ฐ๋ก state๋ฅผ ๋ณ๊ฒฝํ๊ณ ๋ฐ๋ก ๋ ๋๋งํ๋๊ฒ ์๋๋ค!).
์ด๋์ ๋ผ์ดํ์ฌ์ดํด์ ์ ์ดํดํ๊ณ ์ฌ์ฉํด์ผํ๋ค.
๋ด๊ฐ ๋ฌด์์ ์ด๋ ๊ฐ ๋ฐ๊ผ๊ฒ ์ง~~ํ๊ณ ์กฐ๊ฑด๋ฌธ ์ฐ๋ค๊ฐ ๋ก์ง ์๋ชป ์ง ์ ์ด ํ๋๋ฒ์ด ์๋๋ค
๋์ ๊ฐ์ ์ฌ๋๋ค์ ์ํด ์๋ ์ ๊ต์กํ๋ฉด์ ๋ง๋ค์๋ ํด์ฆ๋ฅผ ๋ณด๊ณ ํ์ตํด๋ณด๊ธธ ๋ฐ๋๋ค
์ฝ์์ ์ด๋ป๊ฒ ์ฐํ์ง ๋ง์ถฐ๋ณด๋ฉด ๋๋ค
QUIZ 1.
const [value, setValue] = useState(0)
A : ์ด์ Value ๊ฐ์ ๊ฐ์ ธ์ค์ง ๋ชปํด์ 3๋ง ๋ํด์ง๋ค.
QUIZ 2.
A : ์ด์ Value ๊ฐ์ ๊ฐ์ ธ์์ ๋ชปํด์ 1+2+3 ์ด ๋ํด์ง๋ค.
์ญ์ useEffect ๋ด์์ ์ด์ state ๊ฐ์ ๋ถ๋ฌ์ค์ง ๋ชปํ๋ค.
์ง์ง ๋น๋๊ธฐ,, ์กฐ๋ง๊ฐ ๋น๋๊ธฐ์ ๋ํด ๋ค์ ๊น์ด์๊ฒ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค..
์ฐธ๊ณ
'WEB > REACT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[โ๏ธํธ๋ฌ๋ธ์ํ ] useEffect ๋ด setState ๋ฌดํ๋ฃจํ (0) | 2023.10.05 |
---|---|
react-query๋ฅผ ์งง๊ฒ ์ฌ์ฉํด๋ณธ ํ๊ณ ..๋๊น...? (0) | 2023.04.04 |
Redux (0) | 2021.07.13 |
[React] useEffect (0) | 2021.07.06 |
[React] LifeCycle (๋ผ์ดํ์ฌ์ดํด, ์๋ช ์ฃผ๊ธฐ) (0) | 2021.07.05 |