728x90
๋ฐ์ํ
4.0 Props
- ๋ฌด์์ด ์ปดํฌ๋ํธ๊ฐ ๋ผ์ผ ํ๋์ง, header๊ฐ ์ปดํฌ๋ํธ๊ฐ ๋์ด์ผ ํ๋์ง ์๊ฒ ๋ ๊ฑฐ๋ค.
- footer๊ฐ ์ปดํฌ๋ํธ๊ฐ ๋์ด์ผ ํ๋์ง, notificaion bar๊ฐ ์ปดํฌ๋ํธ๊ฐ ๋์ด์ผ ํ๋์ง
- ์ด ๊ฐ๊ฐ์ ๋ก์ง๋ค์ ๊ฐ๊ฐ์ ์กฐ๊ฐ๋ค๋ก ๋ถ๋ฆฌ์์ผ์, ๋ค๋ฅธ ์์ ์ปดํฌ๋ํธ๋ฅผ Rendering ํ๋ ํฐ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ง ์ ์๋ค.
Props๋ ์ผ์ข ์ ๋ฐฉ์์ด๋ค. ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์์ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์๊ฒ ํด์ฃผ๋ ๋ฐฉ๋ฒ
- ์ฐ๋ฆฌ๊ฐ ํ ๊ฒ์, ํ ์์๋ฅผ ๋ง๋ค๊ฑฐ๋ค.
- ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฑฐ๋ค.
Props๋ฅผ ์ดํดํ๊ธฐ ์ํด์, ๊ทธ๋ฆฌ๊ณ ์ง์ ์ผ๋ก ์ด๊ฒ ์ ํ์ํ์ง๋ฅผ ๋ณด๊ธฐ ์ํด Props๋ก ํด๊ฒฐ์ด ๊ฐ๋ฅํ๊ฒ ๋ ๋ฌธ์ ๋ค์ ์ผ๋จ ๋จผ์ ๊ฒช์ด๋ด์ผ ํ๋ค.
- ๊ฐ์ (์ฐ๋ฆฌ๊ฐ ํ์ฌ์์ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ณ ์๋ค)
- ์ด ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฒํผ์ ๊ฐ๊ณ ์๋ค. ๊ฝค ๋ง์ ๋ค์ํ ๋ฒํผ๋ค( ๋ณ๊ฒฝ์ฌํญ ์ ์ฅ ๋ฒํผ์ด๋ผ ๋ ๊ฐ, ์ทจ์ ๋ฒํผ์ด๋ผ ๋ ๊ฐ, ๋ก๊ทธ์ธ ๋ฒํผ)
- ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋๋์ง ๋ชจ๋ฅธ๋ค.
- ์ฐ๋ฆฌ๊ฐ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๋ณผ ๊ฑฐ๋ค. ๊ฐ๊ฐ ๋ฒํผ๋ง๋ค ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๊ฑฐ๋ค.
- function(ํจ์)๋ฅผ ๋ง๋ค์ด ๋ณผ๊ฑฐ๋ค. SaveBtn์ด๋ผ๋ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์
- component(์ปดํฌ๋ํธ)๋ผ๊ณ ํ๋๊ฑด, ๋ณด๊ณ ์๋ ๋๋ก ๋จ์ง function(ํจ์)์ผ ๋ฟ์ด๋ค.
- ์ปดํฌ๋ํธ๋ ๋จ์ง ํจ์๋ค . ์ด๋ค JSX๋ฅผ ๋ฐํํ๋
- ์ฐ๋ฆฌ๊ฐ ํ๊ณ ์๋ ๊ฒ์ ๋จ์ง ์ด ํจ์๋ค์ ๋ถ๋ฌ๋ด๋ ๊ฑฐ๋ค.
- ์ด๊ฒ ํจ์๋ฅผ ๋ถ๋ฅด๋ ๋ฐฉ์์ด๋ค.
- ์ด๊ฒ (ํจ์ํ) ์ปดํฌ๋ํธ์ด๋ค.
- ์ด๊ฑด JSX์ ๋ด๋ถ๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฑฐ๋ค.
- ๋ฌธ์ ( ๋์์ธ ๊ตฌ๋ฆผ)
- ์คํ์ผ์ ๋ฃ์ด์ค์ผ ๊ฒ ์ ธ?
- button์ style property(์์ฑ)์ ์ฌ์ฉ
- React JS์์ style ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
- CSS ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ, ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฌ์ฉ ๊ธฐ๋ณธ์ ์ผ๋ก ํ ์ ์๋ ๋ฐฉ๋ฒ button Tag(ํ๊ทธ) ๋ด์ style์ ๋ณ๊ฒฝํ๋ ๊ฑฐ๋ค.
- ์ด๋ ๊ฒ ํ๋ ๊ฑฐ๋ Best๊ฐ ์๋๋ค. ์ฝ๋๊ฐ ๋๋ฌด ๊ธธ๋ค.
- style์ ๊ทธ์ ๋ณต๋ถํ๋ ๊ฒ ๋์ ์, ๋ณด๋ค ์ข ๋ ์ค์ ์ด ๊ฐ๋ฅํ ์ปดํฌ๋ํธ
- text ๋ง ๋ค๋ฆ
- ์ด๋ฐ style๋ค์ ๋ชจ๋ ๊ฐ๋ ๋จ ํ ๊ฐ์ง์ ์ปดํฌ๋ํธ๋ง ๋ง๋ค ์ ์๋ค๋ฉด ์ผ๋ง๋ ์ข์๊น?
- ์ฐ๋ฆฌ๊ฐ ํด์ผํ ์ผ์ ์ฐ๋ฆฌ๋ค์ ์ปดํฌ๋ํธ๋ค์ ์ข ๋ ์ค์ ๊ฐ๋ฅํ๊ฒ๋ ๋ง๋๋ ๊ฒ์ด๋ค.
- text๋ฅผ ์ค์ ํ ์ ์๊ฒ ํ๋ ๊ฑฐ๋ค.
- HTML์์ input์ ์ด๋ป๊ฒ ์ค์ ํ์ง?
- button์ ์ค์ (JSX) ์ด๊ฒ EventListener๋ฅผ ๋ถ์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์๋ฌด๊ฒ๋ ์๋์ํจ
- banana์ Btn์ ๋ณด๋๋๋ฐ, ์ด Btn์ banana๋ฅผ ์ฌ์ฉํ์ง ์์์ ๊ทธ๋ ๋ค.
- ๋ฐฐ์๋ณผ ๊ฑด, ๋ค๊ฐ ๋ง๋ค๊ณ ์ฌ์ฉํ๋ ๋ชจ๋ ์ปดํฌ๋ํธ๋ค์ “()” ๊ดํธ๋ก argument(์ธ์)๋ฅผ ๋ฐ๋๋ค๋ ๊ฑฐ๋ค. ๋ฆฌ์กํธ๊ฐ ๋ฃ์ด์ฃผ๋ ๊ฑฐ์ง
- ์ฒซ๋ฒ์งธ argument์ ์ด๋ฆ์ ๋ง์๋๋ก ์ง์ด์ค ์ ์๋ค.
- ์ด ์ธ์ ์ด๋ฆ์ props๋ผ๊ณ ๋ถ๋ฅด๊ณ Btn์ผ๋ก๋ถํฐ ์ ๋ฌ ๋ฐ๋properties ์ธ๊ฑฐ๋ค.
- ๋๊ฐ์ ์๋ฏธ๋ค. Btn()ํจ์๋ฅผ ๋ถ๋ฌ์ banana๋ผ๋ ์ธ์๋ฅผ ์ด๋ฐ์์ผ๋ก ๋ณด๋ด๋ ๊ฒ๊ณผ ๊ฐ๋ค.
- ๊ทธ๋์ ์ด๋ค prop์ด๋ ๋ค๊ฐ Btn ์ปดํฌ๋ํธ์ ๋ณด๋ด๋ฉด ๊ทธ๊ฒ๋ค์ Btn ํจ์์ ์ฒซ ๋ฒ์งธ argument(์ธ์) ์์ผ๋ก ๋ค์ด๊ฐ ๊ฒ์ด๋ค.
- ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ console.log๋ฅผ ๋ณผ ์ ์๋ค. ์๋ํ๋ฉด Btn์ “๋ ๋ฒ” rendering์ ํ๊ธฐ ๋๋ฌธ
- props๋ ์ฒซ ๋ฒ์งธ์ด์ ์ ์ผํ ์ธ์๋ค. ์ด Btn์ด ์ ๋ฌ ๋ฐ๋ ์ ์ผํ ์ธ์.
- Props๋ ์ค๋ธ์ ํธ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ด์ชฝ์์ ๋ณด๋ธ ๋ชจ๋ ๊ฒ๋ค์ ๊ฐ๋ ์ค๋ธ์ ํธ
- ์ฒซ ๋ฒ์งธ Btn์ props๋ ์ด๋ ๊ฒ ์ฐ๋ฆฌ๊ฐ ๋ฃ์ ๋ชจ๋ ๊ฒ์ ๊ฐ๋ ์ค๋ธ์ ํธ๊ฐ ๋๋ค.
- UI ๋ ๋ค๋ฅด๊ฒ ๋๋ค.
- style ์์์ if else๋ฅผ ์ฌ์ฉํ ์ ์๋ค . props ๊ธฐ๋ฐ์ผ๋ก
- <์ด์ ๋ฆฌ ํด์>
- ReactDOM์ render ํ๋ค App์ปดํฌ๋ํธ๋ฅผ ๋ฃจํธ๋ก
- APP์ปดํฌ๋ํธ ์คํ ํ๋๋ฐ Btn ์ปดํฌ๋ํธ๊ฐ ๋๊ฐ ์๋ค. ํ๋๋ text๊ฐ "Save Changes"์ด๊ณ big์ด๋ผ๋ ์์ฑ์ true์ด๊ณ ํ๋๋ text ๊ฐ "Continue"๊ณ big์ด๋ผ๋ ์์ฑ์ false์ด๋ค.
- style์ backgroundColor๊ฐ "tomato" ์ด๊ณ ๋ฑ๋ฑ ์๋๋ฐ big ์ ์์ฑ์ ๋ฐ๋ผ fontSize๊ฐ ๋ฌ๋ผ์ง๋ค.
4.1 Memo
- Btn๋ค์ onClick function์ ๋ฌ์์ฃผ๊ณ ์ถ๋ค.
- onClick function์ ๋ด App ์ปดํฌ๋ํธ์ ์๋ ๋ญ๊ฐ์ state๋ฅผ ๋ฐ๊พธ๊ฒ ๋ ๊ฑฐ๋ค.
- ๋ณด๋ด๋ string์ ๋ค๋ฅธ ๊ฑธ๋ก ๋ฐ๊ฟจ์ ๋ฟ์ด๋ค.
- ๋ง์ฝ onClick์ ์ฌ๊ธฐ ๋ด ์ปค์คํ ์ปดํฌ๋ํธ์๋ค๊ฐ ๋ฃ๋๋ค๋ฉด ์ด๊ฑด ์ด๋ฒคํธ๋ฆฌ์ค๋๊ฐ ์๋๋ค.
- ์ค์ง์ ์ผ๋ก React๊ฐ ์ ๋ ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐ์ํค๋๊ฒ ์๋๋ค.
- ์ด๊ฑด ๋จ์ง prop์ ์ด๋ฆ์ผ ๋ฟ์ด๋ค
- ์ด ์ํฉ์์ style์ ๊ฒฐ์ฝ ์ง์ ์ ์ผ๋ก button์ ๋ฌ๋ฆฌ์ง ์๋๋ค.
- prop๋ค์ ๊ฐ์ ธ์์ ์ ์ฉ ์์ผ์ผ ํ๋ค. ์์ function์์
- ๋๋ฒ์งธ ๋ Continue ๋์ ๋ค์ ๊ทธ๋ฆด ํ์๊ฐ ์๋ค.(์ปดํฌ๋ํธ)
- React Memo(memorize ๊ธฐ์ต)ํ๋ ๊ฒ์ฒ๋ผ ๋ฆฌ์กํธ์๊ฒ ๋งํด์ค ์ ์๋ค.
- ์ฒซ ๋ฒ์งธ ๋ฒํผ์ props๋ ๋ฐ๋๊ฑฐ๋ค.
- ์๋ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ฒํผ์ props๋ state์ ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค
- ์ด๋ฐ feature๊ฐ ๋ฆฌ์กํธ์ ์กด์ฌํ๋ค๋ ๊ฑธ ๋ณด์ฌ์ค๋ค.(๊ธฐ์ตํ ํ์X)
- MemorizedBtn์ ๋ฐ๋ก memorized version์ Btn์ด ๋ ๊ฑฐ๋ค.
- Save Changes๋ฅผ ๋๋ฅด๋ฉด, changeValue ํจ์๊ฐ ์คํ๋ ๊ฑฐ๊ณ ,
- changeValue๋ state๋ฅผ ๋ฐ๊ฟ๊ฑฐ๊ณ , ๊ทธ๊ฑด re-render๋ฅผ ๋ฐ์ ์์ผ์ผ๋ง ํ๋ค.
- ๋ณด๋์ค ๊ฐ์๊ฑฐ ์ฐ๋ฆฌ์ ์ปดํฌ๋ํธ๋ค์ด ๋ค์ ๊ทธ๋ ค์ง ๋ ์ฐ๋ฆฌ๊ฐ ์ปจํธ๋กคํ ์ ์๋ค.
- props๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ค๋ฉด ๋ค์ ๊ทธ๋ฆด ํ์๊ฐ ์๋ค
4.2 Prop Types
- ์ด๋ค prop์ด๋ ๋ณด๋ผ์ ์๊ฒ ํด์ค๋ค. ์ฐ๋ฆฌ๊ฐ ํ๊ณ ์๋ ๋ญ๋ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค.
- ์ปดํฌ๋ํธ์ ํ๊ฒฝ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋งํผ ์ค์ ํ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- text๋ฅผ ๋ณด๋ผ ์ ์๊ณ , booleanํ์ ๋ ๋ณด๋ผ ์ ์๋ค.
- Btn์ ํ ๊ฐ์ง ๋ configuration(์ค์ )์ ํด๋ณด์
- user(์ฌ์ฉ์)๊ฐ prop์ผ๋ก fontSize๋ฅผ ์ ๋ฌํ ์ ์๋๋ก ํด๋ณด์
- ์ฐ๋ฆฌ๋ text๊ฐ string์ด ๋๊ธธ ์ํ๊ณ fontSize๋ number๊ฐ ๋๊ธธ ์ํ๋ค
- ๋ฆฌ์กํธํ์ผ๋ก๋ถํฐ ๋์จ PropTypes๋ผ๋ ํ ํจํค์ง๊ฐ ์๋ค.
- PropType์ ๋ด๊ฐ ์ด๋ค ํ์ ์ prop์ ๋ฐ๊ณ ์๋์ง๋ฅผ ์ฒดํฌํด์ค๋ค.
- props์ ํ์ ์ด ๋ญ๊ณ ์ด๋ค ๋ชจ์์ด์ด์ผ ํ๋์ง ์ฐ๋ฆฌ๊ฐ ์ค๋ช ํด์ค ์ ์๋ค.
์ด์ง ์ดํด์๋
4.3 Recap
4.2 4.3 ๋ค์๋ณด๊ธฐ
728x90
๋ฐ์ํ
'๐ Study > JS, JQuery' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React JS][๋์ฝ์ฝ๋ฉ] Effects (0) | 2022.02.17 |
---|---|
[React JS][๋์ฝ์ฝ๋ฉ] Create react App (0) | 2022.02.17 |
[React JS][๋์ฝ ์ฝ๋ฉ] STATE (0) | 2022.02.17 |
[React JS][๋์ฝ ์ฝ๋ฉ] THE BASICS OF REACT (0) | 2022.01.29 |
[React JS]Components์ Props (0) | 2022.01.29 |