๋ฆฌ์กํธ ๊ณต๋ถ๋ฅผ ์ด๋ป๊ฒ ์์ํด์ผ ํ ์ง ๊ณ ๋ฏผํ๋ ๋ถ๋ค์๊ฒ ์ถ์ฒํ๊ณ ์ถ์ ๊ฐ์์ด๋ค.
๋ง๋ฅ ์ด๋ ค์ ๋ณด์ด๋ ๋ฆฌ์กํธ๋ฅผ ์ค์ต๊ณผ ํจ๊ปํ๋ ์ฝ๊ฒ ์ดํด๊ฐ ๋๊ณ , ๊ฐ์ ํ ๊ฐ๋น ์๊ฐ์ด
์งง์์ ๊ธ๋ฐฉ ์๊ฐํ ๊ฒ ๊ฐ๋ค. ์๋ฌดํผ, ์งง์๋ ๊ฐ์๋ง๋ค ํต์ฌ ๋ด์ฉ์ด ์๊ธฐ์ ์ ์ด๋์
์์ฝ๋ณธ์ ๋ธ๋ก๊ทธ์ ๋จ๊ฒจ๋ณด๋ ค ํ๋ค!
๊ฐ๋ฐ ํ๊ฒฝ ์
ํ
ํ(nodejs ์ต์ ๋ฒ์ , VS Code ์๋ํฐ ์ค์น ํ create-react-app ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ๋ก์ ํธ ์์ฑ) ์๋ก์ด ํ๋ก์ ํธ ํด๋๋ฅผ ์์ฑํ๋ฉด ์์ ๊ทธ๋ฆผ์ฒ๋ผ ํ์ผ ๊ตฌ์กฐ๊ฐ ๋์ด์์
1) App.js : ๋ฉ์ธํ์ด์ง์ ๋ค์ด๊ฐ HTML ์ง๋ ๊ณณ
2) index.html : ์ค์ ๋ ๋๋ง๋๋ ํ์ผ
3) index.js : App.js์ ๋ชจ๋ ๋ด์ฉ์ index.html์ ๋ฃ์ ์ ์๊ฒ ๋๋ ์ญํ
๊ทธ ์ธ,
1) node-modules : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ์ ํด๋
2) public : static ํ์ผ ๋ณด๊ดํจ
3) src : ์์ค์ฝ๋ ๋ณด๊ดํจ
4) package.json : ์ค์นํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก
[ HTML์ฒ๋ผ ์๊ธด JSX ]
[ ์ค์ํ ๋ฐ์ดํฐ๋ ๋ณ์ ๋ง๊ณ ๋ฆฌ์กํธ state๋ก ๋ง๋ค๊ธฐ ]
๋ฐ์ดํฐ๋ 1. ๋ณ์์ ๋ฃ๊ฑฐ๋ / 2. state์ ๋ฃ๊ฑฐ๋
๋ฆฌ์กํธ์ ๋ฐ์ดํฐ ์ ์ฅ๊ณต๊ฐ state ๋ง๋๋ ๋ฒ
1. import{ useState } from 'react' ์๋จ์ ์ถ๊ฐ
2. useState(๋ฐ์ดํฐ)
ย ย - (์ฐธ๊ณ ) ES6 destructuring ๋ฌธ๋ฒ : array, object์ ์๋ ์๋ฃ๋ฅผ ๋ณ์์ ์ฝ๊ฒ ๋ด๊ณ ์ถ์ ๋
(๊ฒฐ๋ก ) state๋,
1. ๋ณ์ ๋์ ์ฐ๋ ๋ฐ์ดํฐ ์ ์ฅ๊ณต๊ฐ
2. useState()๋ฅผ ์ด์ฉํด ๋ง๋ค์ด์ผ ํจ
3. ๋ฌธ์, ์ซ์, array, object ๋ค ์ ์ฅ๊ฐ๋ฅ
state์ ๋ฐ์ดํฐ ์ ์ฅํด๋๋ ์ด์ : ์น์ด App์ฒ๋ผ ๋์ํ๊ฒ ๋ง๋ค๊ณ ์ถ์ด์
-> state๋ ๋ณ๊ฒฝ๋๋ฉด HTML์ด ์๋์ผ๋ก ์ฌ๋ ๋๋ง์ด ๋จ
ย ย ย ย ย ex) ์ ๋ชฉ ์ ๋ ฌ, ์ ๋ชฉ ์์ ...
ย ย ย ย (์๋ก๊ณ ์นจ ์์ด๋ HTML์ด ์ฌ๋ ๋๋ง ๋จ)
์์ฃผ ๋ฐ๋๋, ์ค์ํ ๋ฐ์ดํฐ๋ ๋ณ์X -> state๋ก ์ ์ฅํด์ ์ฐ๊ธฐ
[ ๋ฒํผ์ ๊ธฐ๋ฅ๊ฐ๋ฐ์ ํด๋ณด๊ธฐ / ๋ฆฌ์กํธ state ๋ณ๊ฒฝ ๋ฐฉ๋ฒ ]
๋ฆฌ์กํธ onClick
- ํน์ด์ฌํญ
1) Click์ด ๋๋ฌธ์
2) {} ์ค๊ดํธ ์ฌ์ฉ
3) ๊ทธ๋ฅ ์ฝ๋๊ฐ ์๋ ํจ์๋ฅผ ์ ์
state ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ณดํต ์๋์ ํจํด์ผ๋ก ์ฝ๋๋ฅผ ์งฌ
1. ์์ ํ๊ณ ์ถ์ state์ deep/shallow ์นดํผ๋ณธ์ ํ๋ ์์ฑํจ
2. ์นดํผ๋ณธ์ ์
๋ง์ ๋ง๊ฒ ์์
3. ์นดํผ๋ณธ์ state๋ณ๊ฒฝํจ์()์ ์ง์ด๋ฃ์
[ React Component : ๋ง์ div๋ค์ ํ ๋จ์ด๋ก ์ค์ด๊ณ ์ถ์ ๋ ]
return()์์ HTML์ ๋ฃ์ ๋,
์ด๋ ๊ฒ ํ๊ทธ 2๊ฐ๋ฅผ ํํํ๊ฒ ์ ์ด๋ฃ์ ์ ์๊ณ
๊ตณ์ด ์ด๋ค๋ฉด ์ด๋ฐ ์์ผ๋ก ํ ๋ฒ ๋ ๊ฐ์ธ์ผ ํจ -> return()์์ ํ๋ ํ๋๋ง ๋ค์ด๊ฐ ์ ์์
HTML์ ์ค์ฌ์ ์ธ ์ ์๋ ๋ฐฉ๋ฒ : ๋ฆฌ์กํธ์ Component ๋ฌธ๋ฒ
Component ๋ง๋๋ ๋ฒ
1. ํจ์ ๋ง๋ค๊ณ ์ด๋ฆ ์ง๊ณ
2. ์ถ์ฝ์ ์ํ๋ HTML ๋ฃ๊ณ
3. ์ํ๋ ๊ณณ์ <ํจ์๋ช
/>
Component ์ ์์ฌํญ
1. ์ด๋ฆ์ ๋๊ดํธ
2. return()์์ ์๋ ๊ฑด ํ๊ทธ ํ๋๋ก ๋ฌถ์ด์ผ ํจ
return() ๋ด๋ถ๋ฅผ ๋ฌถ์ ๋ ์๋ฏธ์๋ < div >๋ฅผ ์ฐ๊ธฐ ์ซ๋ค๋ฉด <></>
์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋๋ฉด ๊ด๋ฆฌ๊ฐ ํธํด์ง -> ์ด๋ค๊ฑธ Component๋ก?
1. ๋ฐ๋ณต ์ถํํ๋ HTML ๋ฉ์ด๋ฆฌ๋ค
2. ์์ฃผ ๋ณ๊ฒฝ๋๋ HTML UI๋ค
3. ๋ค๋ฅธ ํ์ด์ง ๋ง๋ค๋๋ ์ปดํฌ๋ํธ๋ก ๋ง๋ฆ
์ปดํฌ๋ํธ ๋ง์ด ๋ง๋ค๋ฉด ๋จ์ : state์ธ๋ ๋ณต์กํด์ง (์์ ์ปดํฌ๋ํธ์์ ๋ง๋ state์ฐ๋ ค๋ฉด props๋ฌธ๋ฒ ์ด์ฉํด์ผ ํจ)
[ ํด๋ฆญํ๋ฉด ๋์ํ๋ UI(๋ชจ๋ฌ์ฐฝ) ๋ง๋๋ ๋ฒ ]
map : ๋ง์ div๋ค์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ค์ด๊ณ ์ถ์ ๋
array๋ด์ ๋ชจ๋ ๋ฐ์ดํฐ์ ๋๊ฐ์ ์์ ์ ์์ผ์ฃผ๊ณ ์ถ์ ๋ .map()(์ ์ฌ๋ฐ๋ณต๋ฌธ)์ ์ฌ์ฉํจ
๋ฐ๋ณต๋ฌธ ์ฐ๋ ๋ฒ
for๋ฐ๋ณต๋ฌธ์ ์ฐ๊ณ ์ถ๋ค๋ฉด?
ย - ๋ณดํต ํจ์ ์์์ ์ฌ์ฉํจ
ย - array์ HTML ์ถ๊ฐํ๋ ๋ฐฉ์
ย - ๊ทธ๋ฆฌ๊ณ array๋ฅผ return์ผ๋ก ๋ฑ์ด๋
[ props : ์์์ด ๋ถ๋ชจ์ state๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๊ณ ์ถ์ ๋๋ ๋งํ๊ณ ์ฐ๊ธฐ ]
props๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด?
1. <์์์ปดํฌ๋ํธ ์ ์กํ ์ด๋ฆ = { state๋ช
} /> ์ด๋ ๊ฒ ์ฌ์ฉํ ํ
2. ์์์ปดํฌ๋ํธ ์ ์ธํ๋ ํจ์ ์๊ดํธ ๋ด์ ํ๋ผ๋ฏธํฐ ํ๋ ์ถ๊ฐํด์ฃผ๊ธฐ
props๋ฅผ ์์ฉํ ์์ธํ์ด์ง ๋ง๋ค๊ธฐ
1. state๋ฅผ ํ๋ ๋ง๋ค๊ณ
2. state๊ฐ ์ด๋ ํ ์ํ์ผ ๋ UI๋ฅผ ์ด๋ป๊ฒ ๋ณด์ฌ์ฃผ๋ผ๊ณ ์ฝ๋ ์ง๋ฉด ๋
3. ๋ฒํผ ๋๋ฅด๊ฑฐ๋ ํ ๋๋ state๋ฅผ ์ด๋ ๊ฒ ๋ฐ๊ฟ์ฃผ์ธ์~ ์ด๋ฐ๊ฒ๋ ํ์ํ๋ฉด ์ถ๊ฐ
[ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ธ์ ๋ณ์์ ์ ์ฅํ๋ ๋ฒ ]
์ฌ์ฉ์๊ฐ input์ ์ ๋ ฅํ ๋ฐ์ดํฐ -> ๋ณดํต ์ค์ํ ๋ฐ์ดํฐ์ด๋ฏ๋ก state์ ์ ์ฅํด์ ์ฌ์ฉ
map์ ์ฐ๋ฉด ์ฝ์์ฐฝ์ ์๋ฌ๋๋ ์ด์ ? key={}๋ผ๋ ์์ฑ์ ์ ์ง ์์์ (๋ฆฌ์กํธ๋ ๋ฐ๋ณต๋ฌธ ๋๋ฆฐ HTML ์์์ ๊ผญ key={}๋ฅผ ์ ์ผ๋ผ๊ณ ๊ถ์ฅํจ)
state๋ ์ง์ ์์ ํ๋ฉด ์๋จ -> ์นดํผ๋ณธ์ ๋ง๋ค์ด ์์ ํ ํ ๊ทธ๊ฒ ์๋ก์ด state๊ฐ ๋๋๋ก ํด์ผ ํจ
[ class๋ฅผ ์ด์ฉํ ์๋ React ๋ฌธ๋ฒ ]