1. ์ํ ๊ด๋ฆฌ
- ์ฑ ์์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์ ์ฅํ๊ณ ํ๋ ์ด์์ ์ปดํฌ๋ํธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ๊ฒ
- ํ ์ปดํฌ๋ํธ ์์์์ ์ํ, ์ฌ๋ฌ ์ปดํฌ๋ํธ ๊ฐ์ ์ํ, ์ ์ฒด ์ฑ์ ์ํ ๊ด๋ฆฌ๋ฅผ ๋ชจ๋ ํฌํจ
1-1. MPA์ SPA์์์ ์ํ ๊ด๋ฆฌ
- MPA: ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ํ์ด์ง๋ฅผ ๋ ๋๋ง โก ํด๋ผ์ด์ธํธ ๋ฐ์ดํฐ์ ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ํฐ ์ฐจ์ด๋ฅผ ๊ฐ์ง์ง ์๋๋ค.
- SPA: ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ , ์๋ฒ์์ ๋๊ธฐํ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ง์ ์ฒ๋ฆฌ. ๊ทธ ์ธ์ ๋ฐ์ดํฐ๋ ํด๋ผ์ด์ธํธ๋ง์ ๋ฐ์ดํฐ๋ก ์ ์ง.
1-2. ์ํ ๊ด๋ฆฌ ๊ธฐ์ ์ด ํด๊ฒฐํ๋ ๋ฌธ์ ๋ค
1) ๋ฐ์ดํฐ ์บ์ฑ๊ณผ ์ฌํ์ฉ
- SPA์์ ํ์ด์ง ๋ก๋ฉ ์๋ง๋ค ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๋ค๋ฉด, ์ฌ์ฉ์ ๊ฒฝํ ์ธก๋ฉด์์ MPA๋ฅผ ํฌ๊ฒ ๋์ด์๊ธฐ ํ๋ค๋ค.
- ๋ณ๊ฒฝ์ด ์ฆ์ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ๊ณ ์ฌํ์ฉ
- ๋ณ๊ฒฝ์ด ์ฆ๋ค๋ฉด, ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์์ ์ ํ์ ํด ์ต์ ํ
2) Prop Drilling
- ์ปดํฌ๋ํธ๊ฐ ๋ณต์กํด์ง๋ ๊ฒฝ์ฐ, ์์ ๋ถ๋ชจ์ ์์ ์ปดํฌ๋ํธ ๊ฐ์ ๊น์ด๊ฐ ์ปค์ง๋ค.
- Context API ๋ฑ์ ํ์ฉํด์, ํ์ํ ์ปดํฌ๋ํธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
- ์ปดํฌ๋ํธ ๊ฐ์ ๊ฒฐํฉ์ฑ์ ๋ฎ์ถ๋ค.
2. Flux Pattern
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ ํจํด
- Unidirectional(์ผ๋ฐฉํฅ) data flow๋ฅผ ํ์ฉ, ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ์ UI ๋ฐ์์ ๋จ์ํ
- ํ๋์ Action์ด ํ๋์ Update๋ง์ ๋ง๋ค๋๋ก ํ๋ค.
- data์ ์ ๋ฐ์ดํธ๊ฐ ํ ๋ฐฉํฅ์ผ๋ก ํ๋ฅด๋ฏ๋ก UI์ ์ ๋ฐ์ดํธ๋ฅผ ์์ธกํ๊ธฐ ์ฝ๋ค.
2-1. Flux ๊ตฌ์กฐ
- Action โก Dispatcher โก Store โก View ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ํ๋ฅธ๋ค.
- store๋ ๋ฏธ๋ฆฌ dispatcher์ callback์ ๋ฑ๋กํด, ์์ ์ด ์ฒ๋ฆฌํ action์ ์ ์
- action creator๋ action์ ์์ฑํ์ฌ dispatcher๋ก ๋ณด๋
- dispatcher๋ action์ store๋ก ๋๊น
- store๋ action์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ ํ, ๊ด๋ จ view๋ก ๋ณ๊ฒฝ ์ด๋ฒคํธ ๋ฐ์
- view๋ ๊ทธ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ฐ์์ ์๋ก์ด UI๋ฅผ ๋ง๋ฆ
- ์ ์ ์ธํฐ๋ ์ ์ด ๋ฐ์ํ๋ฉด view๋ action์ ๋ฐ์
3. useState, useRef, useContext, useReducer
- ํจ์ํ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๋๊ณ , ์ฌ๋ฌ ์ปดํฌ๋ํธ ๊ฐ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ํจ์๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ์์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค.
3-1. useState
const [state, setState] = useState(initState | initFn)
- ๋จ์ํ ํ๋์ ์ํ ๊ด๋ฆฌ์ ์ ํฉ
- state๊ฐ ๋ฐ๋๋ฉด, state๋ฅผ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋
- useEffect์ ํจ๊ป state์ ๋ฐ์ํ๋ ํ ๊ตฌ์ถ
3-2. useRef
- ์ํ๊ฐ ๋ฐ๋์ด๋ ๋ฆฌ๋ ๋๋งํ์ง ์๋ ์ํ๋ฅผ ์ ์
- ์ฆ, ์ํ๊ฐ UI์ ๋ณ๊ฒฝ๊ณผ ๊ด๊ณ์์ ๋ ์ฌ์ฉ ex) setTimeout์ timerId ์ ์ฅ
- uncontrolled component์ ์ํ๋ฅผ ์กฐ์ํ๋ ๋ฑ, ๋ฆฌ๋ ๋๋ง์ ์ต์ํํ๋ ์ํ ๊ด๋ฆฌ์ ์ฌ์ฉ ex) Dynamic Form
3-3. useContext
- ์ปดํฌ๋ํธ์ ์ปดํฌ๋ํธ ๊ฐ ์ํ๋ฅผ ๊ณต์ ํ ๋ ์ฌ์ฉ
- ๋ถ๋ถ์ ์ธ ์ปดํฌ๋ํธ๋ค์ ์ํ ๊ด๋ฆฌ, ์ ์ฒด ์ฑ์ ์ํ ๊ด๋ฆฌ ๋ชจ๋ ๊ตฌํ
- Context Provider ์์์ ๋ ๋๋ง๋๋ ์ปดํฌ๋ํธ๋, useContext๋ฅผ ์ด์ฉํด ๋ฐ๋ก context value๋ฅผ ๊ฐ์ ธ์ด
- context value๊ฐ ๋ฐ๋๋ฉด ๋ด๋ถ ์ปดํฌ๋ํธ๋ ๋ชจ๋ ๋ฆฌ๋ ๋๋ง
3-4. useReducer
const [state, dispatch] = useReducer(reducer, initState)
- useState๋ณด๋ค ๋ณต์กํ ์ํ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉ
- ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด flux pattern์ ๊ธฐ๋ฐํ ์ํ ๊ด๋ฆฌ ๊ตฌํ
- nested state ๋ฑ ๋ณต์กํ ์ฌ๋ฌ ๊ฐ์ ์ํ์ ํ๊บผ๋ฒ์ ๊ด๋ฆฌํ๊ฑฐ๋, ์ด๋ค ์ํ์ ์ฌ๋ฌ ๊ฐ์ง ์ฒ๋ฆฌ๋ฅผ ์ ์ฉํ ๋ ์ ์ฉ
- ์ํ๊ฐ ๋ณต์กํ๋ค๋ฉด, useState์ ๊ดํ callback์ ๋ด๋ ค์ฃผ๋ ๊ฒ๋ณด๋ค dispatch๋ฅผ prop์ผ๋ก ๋ด๋ ค ๋ฆฌ๋ ๋๋ง์ ์ต์ ํํ๋ ๊ฒ์ ๊ถ์ฅ
'elice > WIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[week_09] React ๋ฌธ๋ฒ | React-Router-Dom v6, useReducer, useContext (2) | 2022.03.13 |
---|---|
[week_08] React ๊ธฐ์ด โ ก(2) Hooks (0) | 2022.03.02 |
[week_08] React ๊ธฐ์ด โ ก (1) ์ด๋ฒคํธ (0) | 2022.03.02 |
[week_08] React ๊ธฐ์ด โ (4) React ํ๋ก์ ํธ ์์ฑ (0) | 2022.02.28 |
[week_08] React ๊ธฐ์ด โ (3) Props์ State (0) | 2022.02.28 |