[ Gemini ๋ํ ์์ฝ ] React ์ปดํฌ๋ํธ ๊ฐ ์ํ ๊ณต์ (Context API)
- ์ต์ข ๋ชฉํ
interestPage.tsx์์ ์ฌ์ฉ์๊ฐ SelectButtonGroup ์ปดํฌ๋ํธ๋ฅผ ํตํด '๊ด์ฌ์ฌ'๋ฅผ ์ ํํ๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๊ฐ ํ์ ์ปดํฌ๋ํธ์ธ SelectedInterests์ ์ค์๊ฐ์ผ๋ก ํ์๋๋๋ก ํ๋ ๊ฒ.
- ํต์ฌ ๋ฌธ์ ๋ฐ ํด๊ฒฐ ๊ณผ์
- ๋ฌธ์ : SelectButtonGroup๊ณผ SelectedInterests๋ ๋ถ๋ชจ(interestPage)๋ ๊ฐ์ง๋ง ์๋ก๋ ๊ด๊ณ๊ฐ ์๋ ํ์ (sibling) ์ปดํฌ๋ํธ์ ๋๋ค. ํ์ชฝ์์ ์ผ์ด๋ ์ผ์ ๋ค๋ฅธ ์ชฝ์ด ์ง์ ์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ํด๊ฒฐ์ฑ
:
- ์ค์ ์ ์ฅ์(Context API) ์์ฑ: ๋ชจ๋ ๊ด๋ จ ์ปดํฌ๋ํธ๊ฐ ๊ตฌ๋ ํ ์ ์๋ ์ค์ ๋ฐ์ดํฐ ์ ์ฅ์์ธ InterestContext.tsx๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ด ์ปจํ ์คํธ๋ selectedInterests(์ ํ๋ ๊ด์ฌ์ฌ ๋ฐฐ์ด) ์ํ๋ฅผ ๋ณด๊ดํฉ๋๋ค.
- ์ ์ฅ์ ์ ๊ณต: ์ฑ์ ์ต์๋จ(App.tsx)์ InterestProvider๋ก ๊ฐ์ธ์, ์ฑ ๋ด ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ InterestContext์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ์ต๋๋ค.
- ์ค์ฌ์(Mediator) ํจํด ํ์ฉ: ๋ถ๋ชจ ์ปดํฌ๋ํธ์ธ interestPage.tsx๊ฐ '์ค์ฌ์' ๋๋ '์ค์ ๊ด์ ์ค' ์ญํ ์ ํ๋๋ก ์ค๊ณํ์ต๋๋ค.
- interestPage๋ useInterestContext๋ฅผ ํตํด ์ค์ ์ ์ฅ์์์ํ(selectedInterests)์ ์ํ ๋ณ๊ฒฝ ํจ์(setSelectedInterests)๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- SelectButtonGroup์๊ฒ๋ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค๋ ํจ์(handleInterestsSelectionChange)๋ฅผ onSelectionChange๋ผ๋ props๋ก ๋ด๋ ค์ค๋๋ค.
- SelectedInterests์๊ฒ๋ ํ์ฌ ์ํ ๊ฐ(selectedInterests)์ props๋ก ๋ด๋ ค์ค๋๋ค.
- ์ปดํฌ๋ํธ ์์ :
- SelectedInterests.tsx: ID๋ง ํ์๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ์ ์ฒด interests ๋ฐฐ์ด์ props๋ก ๋ฐ์ ID์ ํด๋นํ๋ label์ ์ฐพ์ ํ์ํ๋๋ก ์์ ํ์ต๋๋ค.
์ฒ์์ ์ดํด๊ฐ ์ด๋ ค์ ๋ ์ด์ : "๋ฐ์ดํฐ๋ ์์์ ์๋๋ก ํ๋ฅธ๋ค"
์๋ง SelectButtonGroup ์ปดํฌ๋ํธ๊ฐ ์ง์ ์ปจํ ์คํธ์ ์ํ๋ฅผ ๋ฐ๊ฟ์ผ ํ๋ค๊ณ ์๊ฐํ์ จ์๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. "์ ํ์ด ์ผ์ด๋๋ ๊ณณ์์ ์ํ๋ฅผ ๋ฐ๊ฟ์ผ์ง" ๋ผ๋ ์๊ฐ์ ๋งค์ฐ ์์ฐ์ค๋ฝ์ต๋๋ค.ํ์ง๋ง React์์๋ '๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ(One-way data flow)' ์์น์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ๋ ํญ์ ๋ถ๋ชจ์์ ์์์ผ๋ก, ์ฆ ์์์ ์๋๋ก ํ๋ฆ ๋๋ค.
์ด ์์น ๋๋ฌธ์ ์์ ์ปดํฌ๋ํธ๊ฐ ๋ถ๋ชจ๋ ์ปจํ ์คํธ์ ์ํ๋ฅผ ์ง์ ์์ ํ๋ ๋์ ,"์ํ๋ฅผ ๋ฐ๊ฟ๋ฌ๋ผ๊ณ ๋ถ๋ชจ์๊ฒ ์์ฒญํ๋ ํจ์"๋ฅผ props๋ก ๋ฐ์ ์คํํ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
- ์๋ชป๋ ์๊ฐ: ์์(SelectButtonGroup)์ด ๋ถ๋ชจ(Context)์ ์ง๊ฐ์์ ์ง์ ๋์ ๊บผ๋ธ๋ค.
- React ๋ฐฉ์: ์์(SelectButtonGroup)์ด ๋ถ๋ชจ์๊ฒ ๋ฐ์ ์ ํ๊ธฐ(onSelectionChange prop)๋ก "์๋น , ์ฉ๋ ์ฃผ์ธ์!"๋ผ๊ณ ์์ฒญํ๋ฉด, ์๋น (interestPage)๊ฐ ์์ ์ ์ง๊ฐ(Context)์์ ๋์ ๊บผ๋ด์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
'๐ป FE > ๐ JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝํธ bind ์ธ์ ์ฐ๋ (0) | 2025.05.14 |
---|---|
"ํจ์๋ ๊ฐ์ฒด๋ค" (0) | 2025.05.13 |
๋ค์ํ ํ์ดํ ํจ์ ๊ตฌ๋ฌธ (0) | 2025.05.13 |
์ฌ๊ท์ ์ (0) | 2025.04.26 |
์๋ฐ์คํฌ๋ฆฝํธ์์ on๊ณผ handle์ ๊ด๊ณ์ ๋ํด ์์๋ณด์๋ค. (0) | 2025.04.20 |