๋ฆฌ์กํธ ํ ํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋น์ ์ด ์ปดํฌ๋ํธ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์ด ์๋ค๋ ์ค๋ช ์ด ์์๋ค. ๋น์ ์ด ์ปดํฌ๋ํธ๋ ๋ฌด์์ด๊ณ , ์ ์ด ์ปดํฌ๋ํธ๋ ๋ฌด์์ด๋ ๋ง์ธ๊ฐ? ์ค๋์ ์ด๊ฒ์ ๋ํด ๊ณต๋ถํด๋ณด๋ ค๊ณ ํ๋ค. ์ ์ด ์ปดํฌ๋ํธ ๋ฆฌ์กํธ ๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด >์ ์ด ์ปดํฌ๋
state ์ฉ๋ ์ค์ํ ๋ฐ์ดํฐ๋ ๋ณ์๋ง๊ณ state์ ๋ด๋๋ค. ์๊ฐํด๋ณด๋ฉด ๋ณ์์ ๋ด์ผ๋ state์ ๋ด์ผ๋ ๊ทธ๊ฒ ๊ทธ๊ฑฐ ๊ฐ์๋ฐ ์ state๋ฅผ ์ฐ๋๊ฑธ๊น? state๋ ๋ณ๋์ฌํญ์ด ์๊ธฐ๋ฉด state๋ฅผ ์ฐ๋ html๋ ์๋์ผ๋ก ์ฌ๋ ๋๋งํด์ค๋ค. ๊ทธ๋ฅ ์ฉ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ณ์์ ๋ด
๋ ๋ณ๊ฒฝํ ํญ๋ชฉ์ด 2๊ฐ๋๊น ๋ง์ ์ด์ง, 100๋ง๊ฐ์์ผ๋ฉด ๋ณ๊ฒฝ๋ state ์ ํ ๋ฐฐ์ด ์ ๋๋ผ ๋ด ์๋ชฉ์ด ๋จผ์ ๋งํ ๊ฒ์ด๋ค.state๋ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ์ฐพ์ ์ฌ๋ ๋๋งํด์ฃผ๋ ๋ ์์ธ๋ฐ ์ฐ๋ฆฌ๊ฐ ์ปคํผ\[0]='๋ น์ฐจ๋ผ๋ผ'๋ผ๊ณ ์ ๋๋ค๊ณ ํด๋ '์ด์ ์ด๋ ์ง๊ธ์ด๋ ๋ญ๊ฐ ๋ค๋ฅธ๊ฑด๋ฐ..?' ๊ฐธ์ฐ
์ปดํฌ๋ํธ๊ฐ ํ์๋๊ณ ์ฌ๋ผ์ง๋ ์๊ฐ๊น์ง์ ํ๋์ ์๋ช ์ฃผ๊ธฐ.๋ด ์ธ์๋ ์ด๊ธฐ ์ด๋ ค์ด๋ฐ ์ปดํฌ๋ํธ์ ์ธ์์ฃผ๊ธฐ๋ฅผ ์์์ ๋ฌด์ํ๋๊ณ ๋ฌป๋๋ค๋ฉด,์ด ๋ ์๋ค์ ์ธ์์ ์๋ฉด ๊ทธ ์ธ์์ ์ค๊ฐ์ค๊ฐ์ ๊ฐ์ญํ ์ ์๊ฒ ๋๋ค!๊ฐ์ญ์ ํ๋ค๋ ๊ฑด ๊ฐ๊ฐ์ ์ธ์์ฃผ๊ธฐ์ ๋ง์ถฐ ์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ฅผ ์คํํ ์ ์๊ฒ
props >๋ถ๋ชจ component์์ ์ฐ๋ state๋ฅผ ์์์๊ฒ ์ ์กํ๋ ๋ฐฉ๋ฒ ์ฃผ์* ๋ถ๋ชจ -> ์์ ์ปดํฌ๋ํธ๊ฐ์๋ง ๊ฐ๋ฅ โ ์์ -> ๋ถ๋ชจ ๋ถ๊ฐ๋ฅ โ โ ํ์ ๋ผ๋ฆฌ ์ปดํฌ๋ํธ๊ฐ์๋ ๋ถ๊ฐ๋ฅ โ input ์ ์ ๋ ฅํ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ onChange={(e)=>{}} ์ง๊ธ
์ด์ ๋ถํฐ App์ ์๋ ๊ฐ/๋ณ์๋ฅผ Fist.jsx์ ๊ฐ์ ธ์ค๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค.1\. ๋งค๊ฐ๋ณ์์ props ์์ฒด๋ก ๋ด์ ๋ณด๋ด๊ธฐ๋งค๊ฐ๋ณ์์ {}์ ๋ด์ ๋ณด๋ด๊ธฐ๊ฐ์ฒด๊ตฌ์กฐ๋ถํดํ ๋น์ผ๋ก ๋ณด๋ด๋ฒ๋ฆฌ๊ธฐ
์์ ๋ณต์ฌ/ ๊น์ ๋ณต์ฌ ๋ถ๋ณ์ฑ์ ์ ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ object.assign/filter/reduce/map๋ฑ์ ๋ด์ฅ ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. push/ pop ์ด๋ฐ๊ฑฐ ์ฐ๋ฉด ์ ๋๋ค. ์ ์ด์ ๊ทธ๋ฅ ์ดํด๊ฐ ์ ๋ผ์ ๊ทธ๋ฅ ํต์งธ๋ก ์ธ์ฐ๋ ๊ฒ ๋์ ๊ฒ ๊ฐ๋ค...ใ ๋ฐ
๋ฆฌ์กํธ ์ต์์ ์ปดํฌ๋ํธ App์ ํ์ ์ปดํฌ๋ํธ๋ค์ ์ฌ๋ฌ ๊ฐ ๋ด๊ณ ์๋ค๋ณด๋ฉด, App.css์ ์ ์ฉ๋ ์คํ์ผ๋ค์ด ํ์ ์ปดํฌ๋ํธ์๋ ์ ์ฉ๋์ด ์คํ์ผ์ด ์ค์ผ๋ ์ ์๋ค. ์ด๋ฅผ ๋ฐฉ์ง๋ฅผ ์ํด ์ ์ฒด ์ปดํฌ๋ํธ์ ๊ณตํต์ ์ผ๋ก ์ ์ฉํ๊ธฐ ์ํ css, ํน์ ์ปดํฌ๋ํธ์๋ง ์ ์ฉํ๊ธฐ ์ํ css
useReducer: ์ํ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ HookuseState์ ๋น์ทํ ๊ฐ๋ ์ด๋, useState๋ฅผ ํตํ ์ํ๊ด๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ์ถ๊ฐ/์ ๊ฑฐ/์์ ๋ฑ์ ๊ฐ์ข Handler๋ฅผ ์ผ์ผํ ์ธ ํ์์์ด ํ๋์ ํจ์๋ก ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.useReducer์ ์ค์ํ 3๊ฐ์ง ๊ฐ๋
const ref = useRef(value)ํจ์ํ ์ปดํฌ๋ํธ์์ useRef๋ฅผ ๋ถ๋ฅด๋ฉด {current:value}๋ก ์๊ธด ref ์ค๋ธ์ ํธ๋ฅผ ๋ฐํํด์ค๋ค. useRef์ ์ธ์๋ก ๋ค์ด๊ฐ value๋ ref ์ค๋ธ์ ํธ์ current ๊ฐ์ผ๋ก ์ ์ฅ๋๋ค. ๋ฐํ๋ ref๋ ์ปดํฌ๋ํธ์
ํน์ ํ ๊ฐ์ ๋ชจ๋ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด๋๊ณ , ์ด๋์๋ ํน์ ํ ๊ฐ์ ๋ถ๋ฌ์์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ Hook๋ฆฌ์กํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์์๋ถํฐ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํด์ฃผ๋ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ๋ง์ฝ ์ด๋ค ํ๋ก์ ํธ์์ ์ ์ญ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ(user, the
props drilling ์ ํผํ ์ ์๊ณ , ์ด๋์๋ ํน์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก useContext ํ ์ด ์๋ค. ์ํ๊ด๋ฆฌ ๋๊ตฌ๋ ์๋๊ณ , ๊ทธ์ ์ํ๋ฅผ ๊ณต์ ํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค!(Redux๋ ์ํ๊ด๋ฆฌ๊น์ง ๊ฐ๋ฅ)๋ณดํต src/context ํด๋๋ฅผ ๋ฐ๋ก ์์ฑํ
์ฐธ๊ณ ์ฌ์ดํธ: ํ๋ก ํธ์๋ ์ํคํ ์ฒ: ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ธฐ์ค๊ณผ ๋ฐฉ๋ฒ by ์ด๋ฌธ๊ธฐ
https://yrnana.dev/post/2021-08-21-context-api-redux/