1. ๋ฆฌ์กํธ์ ๊ธฐ๋ณธ ๊ฐ๋
๐ ๋ฆฌ์กํธ์์ โ์ปดํฌ๋ํธโ์ โํ๋กํผํฐ(props)โ ์ ๋ํด ์ค๋ช
๋ฆฌ์กํธ์์ ์ปดํฌ๋ํธ๋ UI๋ฅผ ๊ตฌ์ฑํ๋ ๋
๋ฆฝ์ ์ธ ๋จ์์
๋๋ค. ๊ฐ ์ปดํฌ๋ํธ๋ ์์ฒด์ ์ธ ์ํ(state)๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค๊ณผ props๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์ ์ ๋ฌํ๋ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ์
๋๋ค. ์๋ฅผ ๋ค์ด, ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ props๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ปดํฌ๋ํธ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์
์ UI ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค ๋ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๐ ๋ฆฌ์กํธ์์ โ์ํ(state)โ์ ์์ฑ(props)โ์ ์ฐจ์ด์
์ํ(state)๋ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๊ด๋ฆฌ๋๋ ๋์ ์ธ ๋ฐ์ดํฐ์ด๊ณ , ์์ฑ(props)์ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌ๋๋ ์ ์ ์ธ ๋ฐ์ดํฐ์ ๋๋ค. ์ํ๋ ์์ฃผ ๋ณํํ ์ ์๋ ๊ฐ์ ์ฌ์ฉ๋๋ฉฐ, props๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ๋ฐ์ดํฐ ์ ๋ฌ์ ๊ด๋ฆฌํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
๐ ๋ฆฌ์กํธ์ ๋ผ์ดํ ์ฌ์ดํด, ๊ฐ ๋ผ์ดํ ์ฌ์ดํด ๋ฉ์๋์ ์ญํ
๋ฆฌ์กํธ์ ๋ผ์ดํ ์ฌ์ดํด์ ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๊ณ , ์
๋ฐ์ดํธ๋๊ณ , ์ ๊ฑฐ๋๋ ๊ณผ์ ์์ ํธ์ถ๋๋ ์ฌ๋ฌ ๋ฉ์๋๋ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋จผ์ , ๋ง์ดํธ ๋จ๊ณ์์๋ ์ปดํฌ๋ํธ๊ฐ ์ฒ์ DOM์ ๋ ๋๋ง๋ ๋ ํธ์ถ๋ฉ๋๋ค. constructor()๋ ์ปดํฌ๋ํธ๋ฅผ ์ด๊ธฐํํ๋ ๋ฐ ์ฌ์ฉ๋๊ณ , render()๋ UI๋ฅผ ๋ ๋๋งํฉ๋๋ค. componentDidMount()๋ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ํ ํ ๋ฒ ํธ์ถ๋๋ฉฐ, API ํธ์ถ์ด๋ ์ด๊ธฐ ์ค์ ์ ํ ๋ ์ ์ฉํฉ๋๋ค.โจ
๋ค์์ ์
๋ฐ์ดํธ ๋จ๊ณ์
๋๋ค. ์ปดํฌ๋ํธ์ ์ํ๋ ์์ฑ(props)์ด ๋ณ๊ฒฝ๋๋ฉด ์
๋ฐ์ดํธ๊ฐ ๋ฐ์ํฉ๋๋ค. shouldComponentUpdate()๋ ๋ ๋๋ง์ ์งํํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฉ์๋๋ก, ์ฑ๋ฅ ์ต์ ํ์ ์ ์ฉํฉ๋๋ค. render()๋ UI๋ฅผ ๋ค์ ๋ ๋๋งํ๊ณ , componentDidUpdate()๋ ์
๋ฐ์ดํธ ํ์ ํธ์ถ๋์ด DOM ์
๋ฐ์ดํธ ์ดํ ์ฒ๋ฆฌํ ์์
์ ๋ฃ์ ์ ์์ต๋๋ค.โจ
๋ง์ง๋ง์ผ๋ก ์ธ๋ง์ดํธ ๋จ๊ณ์์๋ ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋ ๋ ํธ์ถ๋๋ componentWillUnmount()๊ฐ ์์ต๋๋ค. ์ด ๋ฉ์๋๋ ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํ๊ฑฐ๋, ํ์ด๋จธ๋ฅผ ์ ์งํ๋ ๋ฑ์ ์์
์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
โจํจ์ํ ์ปดํฌ๋ํธ์์๋ useEffect ํ
์ ํ์ฉํ์ฌ ๋ง์ดํธ, ์
๋ฐ์ดํธ, ์ธ๋ง์ดํธ ์์
์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
2. ๋ฆฌ์กํธ์ ์ฑ๋ฅ ์ต์ ํ
๐ ๋ฆฌ์กํธ์์ ๋ถํ์ํ ๋ ๋๋ง์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
์ฒซ ๋ฒ์งธ๋ shouldComponentUpdate ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ํ๋ props๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ ๋ ๋๋ง์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ๋ React.memo๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ปดํฌ๋ํธ(props๊ฐ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉด ๋ค์ ๋ ๋๋งํ์ง ์๋ ์ปดํฌ๋ํธ)์ ์ ์ฉํ ์ ์์ต๋๋ค.
์ธ ๋ฒ์งธ๋ก, useMemo๋ useCallback์ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ์ด์ ์ด์
์ ํตํด ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ๋ค์ ๋ ๋๋ง ์ฑ๋ฅ์ ์ต์ ํํ๊ณ , ์ปดํฌ๋ํธ๊ฐ ๋ถํ์ํ๊ฒ ๋ค์ ๋ ๋๋ง๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
๐ shouldComponentUpdate์ React.memo๋ ์ด๋ป๊ฒ ์ฌ์ฉ? ๊ทธ ์ฐจ์ด์ ์ ?
shouldComponentUpdate๋ ํด๋์คํ ์ปดํฌ๋ํธ์์ ์ฌ์ฉ๋๋ฉฐ, ๋ฆฌ๋ ๋๋ง ์ฌ๋ถ๋ฅผ ์ง์ ์ ์ดํฉ๋๋ค.
React.memo๋ ํจ์ํ ์ปดํฌ๋ํธ์์ ์ฌ์ฉ๋๋ฉฐ, props๊ฐ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉด ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํฉ๋๋ค. React.memo๋ ๋ด๋ถ์ ์ผ๋ก shouldComponentUpdate์ ๊ฐ์ ์ญํ ์ ํ์ง๋ง, ํจ์ํ ์ปดํฌ๋ํธ์ ์ ํฉํฉ๋๋ค.
๐ useMemo์ useCallback์ ์ธ์ ์ฌ์ฉํด์ผ ํ๋์ง ์ค๋ช
useMemo๋ ๊ฐ์ ๋ฉ๋ชจ์ด์ ์ด์
ํ๊ณ , ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉด ๋ค์ ๊ณ์ฐํ์ง ์๋๋ก ํฉ๋๋ค. ์ฃผ๋ก ๊ณ์ฐ ๋น์ฉ์ด ํฐ ๊ฐ์ด ์์ ๋ ์ฌ์ฉํฉ๋๋ค.
useCallback์ ํจ์๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์
ํ์ฌ, ํจ์๊ฐ ๋ถํ์ํ๊ฒ ๋ค์ ์์ฑ๋์ง ์๋๋ก ํฉ๋๋ค. ์์ ์ปดํฌ๋ํธ์ ํจ์๊ฐ props๋ก ์ ๋ฌ๋ ๋, ์์ ์ปดํฌ๋ํธ์ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ๊ณ ์ถ์ ๋ ์ ์ฉํฉ๋๋ค.
๋ ํ
๋ชจ๋ ๋ถํ์ํ ์ฐ์ฐ์ด๋ ํจ์ ์์ฑ์ ๋ฐฉ์งํ์ฌ ๋ฆฌ๋ ๋๋ง ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.โจ(useMemo: ๊ฐ ๊ณ์ฐ ์ต์ ํํ ๋ ์ฌ์ฉ / useCallback: ํจ์ ์ฌ์์ฑ ์ต์ ํํ ๋ ์ฌ์ฉ)
3. ์ํ ๊ด๋ฆฌ
๐ ๋ฆฌ์กํธ์์ ์ํ ๊ด๋ฆฌ๋ ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง? useState ์ธ์ ๋ค๋ฅธ ์ํ ๊ด๋ฆฌ ๋๊ตฌ๋?
๋ฆฌ์กํธ์์ ์ํ ๊ด๋ฆฌ๋ ์ปดํฌ๋ํธ ๋ด๋ถ์์ useState๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค. useState๋ ์ปดํฌ๋ํธ ๋ด์์ ์ํ ๋ณ์๋ฅผ ์ ์ํ๊ณ , ์ด ๋ณ์์ ๊ฐ์ ์
๋ฐ์ดํธํ ์ ์๋ ํจ์๋ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ๋ผ ํ๋ฉด์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ ๋ useState๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ํ, ์ํ ๊ด๋ฆฌ๊ฐ ๋ ๋ณต์กํด์ง๊ฑฐ๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ ๊ฐ์ ์ํ๋ฅผ ๊ณต์ ํด์ผ ํ ๊ฒฝ์ฐ ๋ฆฌ๋์ค(Redux)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฆฌ๋์ค๋ ์ค์ ์ง์ค์ ์คํ ์ด์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์ก์
๊ณผ ๋ฆฌ๋์๋ฅผ ํตํด ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ์์
๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ํ ๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ์ฅํ๊ณ , ๋๋ฒ๊น
ํ ์ ์์ต๋๋ค.
๐ useReducer์ useState์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช
useState์ useReducer๋ ๋ฆฌ์กํธ์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ ๊ฐ์ง ํ
์
๋๋ค. useState๋ ๊ฐ๋จํ ์ํ๋ฅผ ๊ด๋ฆฌํ ๋ ์ฌ์ฉํ๊ณ , ์ํ ๊ฐ์ ์ง์ ์์ ํ๋ฉฐ ์ํ ๋ณํ๊ฐ ๊ฐ๋จํ ๊ฒฝ์ฐ ์ ํฉํฉ๋๋ค.
๋ฐ๋ฉด, useReducer๋ ์ฌ๋ฌ ์ํ ๋ณ์๋ ๋ณต์กํ ์ํ ๋ณํ ๋ก์ง์ ๊ด๋ฆฌํ ๋ ์ฌ์ฉํฉ๋๋ค. useReducer๋ ๋ฆฌ๋์ ํจ์์ dispatch๋ฅผ ์ฌ์ฉํด ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ฉฐ, ์ํ ์
๋ฐ์ดํธ ๋ก์ง์ ๋ ๋ช
ํํ๊ฒ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ useState๋ ์ํ ๊ด๋ฆฌ๊ฐ ๊ฐ๋จํ ๋, useReducer๋ ๋ณต์กํ ์ํ ๋ณ๊ฒฝ์ด๋ ์ฌ๋ฌ ์ก์
์ ๋ค๋ฃฐ ๋ ์ ์ฉํฉ๋๋ค.
4. ๋ฐ์ดํฐ์ฒ๋ฆฌ์ ๋น๋๊ธฐ ์์
๐ ๋น๋๊ธฐ ์์ ์ ๋ฆฌ์กํธ์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ?
๋ฆฌ์กํธ์์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ๋๋ useEffect ํ ์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. useEffect๋ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋ ํ ํน์ ์์ ์ ์คํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฅผ API์์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ, useEffect ์์์ ๋น๋๊ธฐ ์์ ์ ์คํํ๊ณ , async/await์ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๐ API ํธ์ถ ์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช
API ํธ์ถ ์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
๋จผ์ , CORS ๋ฌธ์ ๋ ๋ค๋ฅธ ๋๋ฉ์ธ์์ API๋ฅผ ํธ์ถํ ๋ ๋ณด์์์ ์ด์ ๋ก ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์๋ฒ์์ CORS ํค๋๋ฅผ ์ค์ ํ๊ฑฐ๋ ํ๋ก์ ์๋ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ํ, ์๋ชป๋ API ์๋ต ํ์์ด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ, ์ด๋๋ ์๋ต์ ์ฒดํฌํ๊ณ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํตํด ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ธ์ฆ ๋ฌธ์ ๋ ํ ํฐ์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ด๋ฆฌํ๊ณ ์์ฒญ ํค๋์ ์ ์ ํ ์ธ์ฆ ์ ๋ณด๋ฅผ ํฌํจ์์ผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๐ ๋ฆฌ์กํธ์์ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง(SSR)๊ณผ ํด๋ผ์ด์ธํธ์ฌ์ด๋ ๋ ๋๋ง(CSR)์ ์ฐจ์ด์
์๋ฒ์ฌ์ด๋ ๋ ๋๋ง(SSR)๊ณผ ํด๋ผ์ด์ธํธ์ฌ์ด๋ ๋ ๋๋ง(CSR)์ ๋ ๋๋ง์ด ์ด๋ฃจ์ด์ง๋ ์์น๊ฐ ๋ค๋ฆ
๋๋ค.
SSR์ ์๋ฒ์์ HTML์ ๋ ๋๋งํ์ฌ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก, ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋น ๋ฅด๊ณ SEO(๊ฒ์์์ง ์ต์ ํ)์ ์ ๋ฆฌํฉ๋๋ค. ํ์ง๋ง ๋งค ์์ฒญ๋ง๋ค ์๋ฒ์์ ๋ ๋๋ง์ ํด์ผ ํ๋ฏ๋ก ์๋ฒ ๋ถํ๊ฐ ํด ์ ์์ต๋๋ค.
๋ฐ๋ฉด, CSR์ ํด๋ผ์ด์ธํธ์์ JavaScript๋ก ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ ๋๋งํ๋ ๋ฐฉ์์ผ๋ก, ์ด๊ธฐ ๋ก๋ฉ์ ๋๋ฆด ์ ์์ง๋ง ์๋ฒ ๋ถํ๊ฐ ์ ๊ณ , ํ์ด์ง ์ ํ์ด ๋น ๋ฅด๋ฉฐ ์ฌ์ฉ์ ๊ฒฝํ์ด ์ข์ต๋๋ค.
5. ์ปดํฌ๋ํธ ์ค๊ณ ๋ฐ UI ๊ตฌํ
๐ UI ์ปดํฌ๋ํธ๋ฅผ ์ค๊ณํ ๋ ์ค์ํ ์ ์ ๋ฌด์
UI ์ปดํฌ๋ํธ๋ฅผ ์ค๊ณํ ๋ ๊ฐ์ฅ ์ค์ํ ์ ์ ์ฌ์ฌ์ฉ์ฑ์ ๋๋ค. ๊ฐ๋ฅํ ํ ์์ ๋จ์๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌํ์ฌ, ๋ค๋ฅธ ๊ณณ์์๋ ์ฝ๊ฒ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ๋ํ, ๊ฐ ์ปดํฌ๋ํธ๊ฐ ๋จ์ผ ์ฑ ์ ์์น(Single Responsibility Principle)์ ๋ฐ๋ฅด๋๋ก ์ค๊ณํ์ฌ ์ ์ง๋ณด์์ฑ์ ๋์ ๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋์ ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ๊ตฌ์กฐ, ์คํ์ผ๋ง, ๋์ ๋ฑ์ ๋ชจ๋ ์ฒ๋ฆฌํ๋ ๋์ , ํ๋ ์ ํ ์ด์ ๋ ์ปดํฌ๋ํธ(UI๋ฅผ ๊ทธ๋ฆฌ๋ ์ญํ )์ ์ปจํ ์ด๋ ์ปดํฌ๋ํธ(๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ํ ๊ด๋ฆฌ๋ฅผ ์ฒ๋ฆฌ)๋ฅผ ๊ตฌ๋ถํ์ฌ ์ค๊ณํฉ๋๋ค. ์ด๋ ๊ฒ ๋ถ๋ฆฌ๋ ์ปดํฌ๋ํธ๋ ๋ ์ง๊ด์ ์ด๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์์ง๋๋ค.
๐ ๋ฆฌ์กํธ์์ ์ปจํ ์ด๋ ์ปดํฌ๋ํธ์ ํ๋ ์ ํ ์ด์ ๋ ์ปดํฌ๋ํธ์ ์ฐจ์ด๋ฅผ ์ค๋ช
์ปจํ
์ด๋ ์ปดํฌ๋ํธ๋ ์ฃผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋ฐ์ดํฐ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ์ปดํฌ๋ํธ๋ ์ฃผ๋ก ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ ํฌํจํ๊ณ , ํ์ํ ๋ฐ์ดํฐ๋ฅผ props๋ก ์ ๋ฌํด์ค๋๋ค. ์๋ฅผ ๋ค์ด, API ํธ์ถ ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์์ ์ปดํฌ๋ํธ์ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค.
ํ๋ ์ ํ
์ด์
๋ ์ปดํฌ๋ํธ๋ ์ฃผ๋ก UI๋ฅผ ๋ ๋๋งํ๋ ์ญํ ๋ง ์ํํฉ๋๋ค. ์ํ ๊ด๋ฆฌ๋ ๋ฐ์ดํฐ ๋ก์ง์ ์ฒ๋ฆฌํ์ง ์๊ณ , ์ ๋ฌ๋ฐ์ props๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉด์ ๊ทธ๋ฆฝ๋๋ค. ์ฆ, ์ด ์ปดํฌ๋ํธ๋ UI๋ง ์ ๊ฒฝ ์ฐ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ ๋ํ ๋ก์ง์ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค.
๊ฐ๋จํ ๋งํด, ์ปจํ
์ด๋ ์ปดํฌ๋ํธ๋ "๊ธฐ๋ฅ์ "์ด๊ณ , ํ๋ ์ ํ
์ด์
๋ ์ปดํฌ๋ํธ๋ "ํํ์ "์
๋๋ค.
๐ ๋ฆฌ์กํธ์์ ์ํ๊ฐ ๊ด๋ฆฌ๋๋ ์ปดํฌ๋ํธ์ ์์ ์ปดํฌ๋ํธ๋ฅผ ์ด๋ป๊ฒ ๋๋๋์ง ์ค๋ช
๋ฆฌ์กํธ์์ ์ํ๊ฐ ๊ด๋ฆฌ๋๋ ์ปดํฌ๋ํธ๋ ๋ด๋ถ์์ state๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ด๋ฅผ ๋ณ๊ฒฝํ๋ ๋ก์ง์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ํ๊ฐ ๋ณ๊ฒฝ๋๊ณ UI๊ฐ ์
๋ฐ์ดํธ๋๋ ๋ฐฉ์์
๋๋ค.
๋ฐ๋ฉด, ์์ ์ปดํฌ๋ํธ๋ state๋ฅผ ๊ฐ์ง์ง ์๊ณ , ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ props๋ง์ ์ด์ฉํด UI๋ฅผ ๋ ๋๋งํฉ๋๋ค. ์์ ์ปดํฌ๋ํธ๋ ์ํ ๊ด๋ฆฌ ์์ด ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์ญํ ๋ง ํ์ฃ . ์ด๋ ๊ฒ ๋ ๊ฐ์ง ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ๋ถํ๋ฉด, ์ํ ๊ด๋ฆฌ์ UI ๋ ๋๋ง์ ํจ์จ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.