๋ด์ผ๋ฐฐ์์บ ํ 4๊ธฐ ์คํ๋ฅดํ์ฝ๋ฉ React B๋ฐ
๐ ์ค๋์ ๊ณต๋ถ
1. React Udemy ๊ฐ์
- React ๊ธฐ์ด ๋ฐ ์ค์ต ์ปดํฌ๋ํธ
PROPS
- props๋ก ๋๊ฒจ์ค ๋ key๊ฐ์ ๋ด ๋ง์๋๋ก ์ค์ ํด๋ ๋๋ค.
- ์ปดํฌ๋ํธ์์๋ ๊ทธ key ์ด๋ฆ์ ์จ์ผํ๋ค.
- props๋ ๋์ ์ธ ๋ฐ์ดํฐ ๋ฟ๋ง ์๋๋ผ ๋ด๊ฐ ์ง์ ํ value(๊ฐ)์ ๋๊ฒจ ์ค ์ ์๋ค.
- component์์ componet๋ฅผ ๋ถ๋ฆฌํ ๋ props๋ก ๋ฐ์ดํฐ ๋๊ฒจ์ฃผ๋ ๊ฒ ์ฃผ์!
- App -> A -> B์ผ ๋ A์์
props
๋ก ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์๊ณ ๊ทธ ์ค date
๋ถ๋ถ๋ง B๋ก ๋ถ๋ฆฌํ๋ค.
- A์์ B์๊ฒ
props.date
๋ถ๋ถ์ props๋ก ๋๊ฒจ์ค์ผ ํ๋ค.
- wrapper component
- A ์ปดํฌ๋ํธ๋ก ๋ด์ฉ์ ๊ฐ์์ ๋ ์์ ์๋ ๊ฒ๋ค์ A์ปดํฌ๋ํธ์์
props.children
์ผ๋ก ๋ฐ๋๋ค.
- A ์ปดํฌ๋ํธ์ ์๋ ์๋
className
์ ์ ์ฉ์ํค๊ณ ์ถ์ผ๋ฉด A ์ปดํฌ๋ํธ ํ์ผ์์ classes ๋ณ์๋ฅผ ์ค์ ํด ํญ์ ์ ์ฉ๋๋ className
๊ณผ props๋ก ๋ฐ์์จ className
์ ๋ฃ๊ธฐ
โ
const classes = "card" + props.className;
- ๋๋ ๋ ์๋ชป ๋๋ด๋์ง CSS๊ฐ ์ ์ฉ์ด ์ ๋ผ์ ์ผ๋จ ๋๋ ๊ฒ ์ ์ฉ ์ทจ์
- ๋ด์ฅ Method
toISOString()
toLocaleString()
getFullYear()
- 4์๋ฆฌ ์ ๋
๋
2. Redux ํน๊ฐ
-
๋ชฉํ
- Redux๊ฐ ๋ฌด์์ด๊ณ ์ ์จ์ผ ํ๋์ง ์ดํดํ๊ธฐ
-
Redux๊ฐ ํ์ํ ์ด์
- props drilling์ผ๋ก ์ธํ ๋ฌธ์ ๋ฐ์
-> ์ค๊ฐ ์ปดํฌ๋ํธ๊ฐ 100๊ฐ๋ผ๋ฉด app์์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ฌ์ ๋ 100๋ฒ ์์ ํด์ผ ํจ
- state๊ฐ 100๊ฐ ์ด์์ผ ๋
-> ํ๊ธ๋ง ๋ด์ ์ ์๋ state์ ์๋ฌธ์ ์ถ๊ฐํ๊ฒ ๋๋ฉด ์ค๋ฅ๊ฐ ๋จ.
-> state ๋ณ๊ฒฝ / ๊ด๋ฆฌ๋ Redux์์๋ง ํ๊ธฐ!
-
store
- ์ ๋ง์ state์ Reducer๊ฐ ์๋ ์ ์ฅ์
- dispatch๋ ์๋ค!
-
state
- ์ ์ญ state -> store์ ์์
- ์ปดํฌ๋ํธ state(์ง์ญ state)
- ๋ชจ๋ state๊ฐ Redux๋ก ๊ด๋ฆฌ๋๋ ๊ฒ ์๋!
-
์๋ ์๋ฆฌ
- 'config'ํด๋์
configStore.js
์์ ๋ฆฌ๋์, store๋ฅผ ๋ง๋ค๊ณ store๋ฅผ export
- 'modules'ํด๋์
counter.js
์์ 'Action Value', 'Action creator', 'Reducer'๋ฅผ ๋ง๋ ๋ค.
- 'Action creator' ๋ก ๋ง๋ค์ด์ง ๋ถ๋ถ์ UI(์ปดํฌ๋ํธ)์์ method๋ก ์ฐ๋ฉด์ Action์ด ์ผ์ด๋๊ฒ ํ๋ค.
-
์ค์ต
์
์ถ๊ธ ๋ง๋ค๊ธฐ
- ํฐ๋ฏธ๋์์ redux๋ฅผ ๋จผ์ ์ค์นํด์ผ ํ๋ค.
yarn add @reduxjs/toolkit react-redux
-> ๋งํฌ ์ฐธ๊ณ ํด์ ๊ฐ ํ์ผ์์ redux ์ฐ๊ฒฐ
์ฐธ๊ณ : https://react-redux.js.org/tutorials/quick-start
- ์ฐ๊ฒฐํ๊ณ ๋ณด๋ ๋ฒํผ ๋๋ฅด๊ธฐ ์ ์ input์ ์
๋ ฅํ ๊ฐ์ด ์๋์ผ๋ก ๋ฐ์์ด ๋๋ค.
-> initialState๋ฅผ ๋ฐ์์ค๋๋ฐ ๋ฌธ์ ๊ฐ ์์๋๋ฐ
state={initialState}
์ฌ๊ธฐ์ ์ค๊ดํธ๋ฅผ ์ง์ฐ๋ ์ ์๋ํ๋ค.(git commit์ผ๋ก ํ์ธ)
3. React ์
๋ฌธ ๊ณผ์ ๋ค์ ํ ๊ฒ ์์
-
CustomButton ๋ถ๋ฆฌ
-
์ค๋ณต ์ฝ๋ ์ ๋ฆฌ(ToDoBox)
-
โ
alert ๊ตฌํ
-
โ
CSS
-
์ผ์์ผ ์คํฐ๋์์ ๋ฆฌ๋ทฐํ๊ธฐ๋ก ํด์ CSS, ์ฃผ์ ๋ฑ ์ ๋ณด๊ธฐ!
-
CSS ์ ๋ณด๋ค๊ฐ ์ค๋ Udemy React ๊ฐ์์์ ๋ฐฐ์ด๋๋ก props ์ ๋์ด๊ฐ๋์ง ์ ์ฒด์ ์ธ ์ฝ๋ ์ ๊ฒ!
-> props ์กฐ๊ธ ์์ ํ๊ณ ์ฃผ์ ๋ ์ถ๊ฐ
-
input์ด ๋น์์ ๋ alert ๊ตฌํ์ด ์ ์๋ผ์ ํ์๋ค ๋์์ ๋ฐ์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ ๊ตฌํํ์!
-> ์ ๋ชฉ๋ง ๋น์์ ๋, ๋ด์ฉ๋ง ๋น์์ ๋ ๊ฐ๊ฐ input์ฐฝ์ focus ๋๋ ๋ถ๋ถ๋ ๋์ ๋ฐ์ ๊ตฌํํ๋ค!
๐ฉ
- ํ ๊ฒ ๋๋ฌด ๋ง์
- ์ค์ ๋ด๋ด ํ๋ก๊ทธ๋๋จธ์ค ๋์ ํ๋ค ๋ค ์ฃผ๋ง์ ํ๊ธฐ๋ก ํ๊ณ ๋๊ฒจ๋ฒ๋ฆฌ๊ณ React ๋ง์ ๊ณต๋ถํ๋ค.