๊ฐ์๊ธฐ Redux๋ฅผ ์์ํ๋ค. ๊ฐ์์์๋ ๋ฐ๋ผ์น๋ ์์ค์ผ๋ก๋ง ๊ฐ๋ฅด์น๊ณ Redux์ ๋ํด ๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ์ํ์ง๋ ์๋ ๊ฒ ๊ฐ์์ ์ธํ๋ฐ ์ํ์ฝ๋ฉ Redux ๊ฐ์๋ฅผ ๋ณด๊ณ Redux ๊ณต๋ถ๋ฅผ ํด๋ณด๊ธฐ๋ก ํจ
๊ฐ์๋ ์ด๊ฑฐ ์ด ํ๋ฆฌํฐ์ ๊ณต์ง ๋ ์กฐํ์..
[์ง๊ธ ๋ฌด๋ฃ]์ํ์ฝ๋ฉ - Redux ๊ฐ์ | Egoing Lee - ์ธํ๋ฐ
Egoing Lee | , [์๋ฒ ๋ฉ ์์] 1. ๊ฐ์ ์๊ฐ ์ํ์ฝ๋ฉ์ Redux ์์ ์ ์์ธก ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ ์ฅ์์ธ Redux๋ฅผ ๋ค๋ฃจ๋ ๊ฐ์์ ๋๋ค. ์ด ๊ฐ์์์๋ ์์ํ ์น๊ธฐ์ ์ธ HTML, JavaScript์ Redux๋ง์
www.inflearn.com
Immutablity
๋จผ์ , Redux๋ฅผ ์์ํ๊ธฐ ์ ์ Javascript Immutablity ๊ฐ๋ ๋ถํฐ ์ง์ด๋ณด์.
Immutability ์ด๋?
๊ฐ์ฒด๋ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋ ์ดํ ๋ณ๊ฒฝ๋์ง ์๋ ํน์ฑ
Immutable์ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ง ํ์ ์ ์ผ๋ก ์ ์ฉ๋๋ ๊ฐ๋ ์ด ์๋๋ผ, ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ํ๊ด๋ฆฌ, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ๋ฒ๊ทธ ๋ฐฉ์ง, ๋๋ฒ๊น ๋ฑ ๋ฌด์ํ ์ธก๋ฉด์์ ์ค์ํ ์ญํ ์ ํ๋ ๊ฐ๋ ์ด๋ค.
Javascript์์ ๋ Primitive types, ์๋ฃํ์ด Immutable์ด๋ค. Object types(์ฐธ์กฐํ)์ mutable์ด๋ค.
Number | ๊ฐ ์์ฒด๋ฅผ ๋ณ๊ฒฝํ ์ ์์ |
String | ๋ฌธ์์ด ๋ด๋ถ๋ ์์ ๋ถ๊ฐ (์ ๋ฌธ์์ด ์์ฑ) |
Boolean | ๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ |
null | ๋ถ๋ณ |
undefined | ๋ถ๋ณ |
Symbol | ๋ถ๋ณ |
BigInt | ๋ถ๋ณ |
์ ์ค์ํ์ง?
์ํ๊ด๋ฆฌ์์ ์์ ์ฑ
- React, Redux, zustand ๋ฑ ์ํ ๊ด๋ฆฌ์์ ์ฃผ๋ก immutable ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ค.
- ์ด์ ์ํ๋ฅผ ๋ณต์ ํ์ฌ ์๋ก์ด ์ํ๋ฅผ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ๊ฐ ์ค๊ณ , ๋ณ๊ฒฝ ์ถ์ ์ด ์ฝ๋ค.
์์ธก ๊ฐ๋ฅ์ฑ
- ๊ฐ์ ๋ณ๊ฒฝํ์ง ์๊ธฐ ๋๋ฌธ์ side effect๊ฐ ์๋ค.
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ์ค์ํ ๊ฐ๋ ์ด๋ค.
undo, redo ๊ตฌํ์ด ์ฝ๋ค.
- ์ํ๊ฐ ๋ณต์ฌ๋์ด ์์ด๋ฏ๋ก, ์ด์ ์ํ๋ก ์ฝ๊ฒ ๋์๊ฐ ์ ์๋ค.
Immutable ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด ๋ค๋ฃจ๊ธฐ, ๊ฐ์ฒด ๋ถ๋ณ์ฑ ์ ์ง ๋๊ตฌ ๋ฑ ์ ๊ธ์ด ๋๋ฌด ๊ธธ์ด์ง๋ฏ๋ก ๋ค์์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๊ณ Redux ์์
Redux
A Predictable state container for Javascript apps, ์๋ฐ์คํฌ๋ฆฝํธ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ ์์ธก ๊ฐ๋ฅํ ์ํ์ ์ ์ฅ์
๋ณต์ก์ฑ-> ๋์ ๋ณด์ด์ง ์์์ ์ํํจ. ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๊ฐ์ฅ ์ํํ ์์ ์ค ํ๋์ด๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ์ฝ๋ ๋ณต์ก์ฑ์ ๋ฎ์ถ๋ ๊ฒ์ ์ถ๊ตฌํ ์๋ฐ์ ์๋๋ฐ, ๋ฆฌ๋์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ์ ํ๊ธฐ์ ์ผ๋ก ๋ฎ์ถฐ, ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ์์ํ ์ ์๊ฒ ํ๋ ๋๊ตฌ์ด๋ค.
๋ฆฌ๋์ค์ ํน์ง
1. Single Source of Truth
๋จ ํ๋์ ์ง์ค์ ์์ฒ, ํ๋์ ์ํ๋ฅผ ๊ฐ๋๋ค๋ ๊ฒ์ด ๋ฆฌ๋์ค์ ๊ฐ์ฅ ํฐ ํน์ง์ด๋ค.
ํ๋์ ๊ฐ์ฒด ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ชจ๋ ์ํ๋ฅผ ์ค์์ง์ค์์ผ๋ก ๊ด๋ฆฌ ํ๋ค๋ ๊ฒ! ๋จ ํ๋์ state๋ฅผ ์ ์งํ์ฌ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ์ ๋ฎ์ถ๋ค.
2. ์ธ๋ถ๋ก๋ถํฐ ์ฒ ์ ํ ์ฐจ๋จํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ์ถ๋ค๋ฉด, ๋์คํจ์ณ, ๋ฆฌ๋์๋ฅผ ์ฌ์ฉํด์ผ๋ง ์์ ์ ๊ฐํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ ๋๋ ์๊ฒฉํ ๊ด๋ฆฌ๋ฅผ ํ๋ค. getstate๋ฅผ ํตํด์๋ง ๊ฐ์ ธ๊ฐ ์ ์๋ค.
์ฆ, ์ธ๋ถ์์ ์ง์ ์ ์ผ๋ก ์์ ํ ์ ์๊ฒ ํ์ฌ state๊ฐ ์๋์ ์ด์ง ์๊ฒ ๋ฐ๋์ง ์๊ฒ ๋ฐฉ์งํ์ฌ, ์์๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์งํ๊ฒ ํ๋ค.
๊ฐ๊ฐ sate ์์ฑ ์ ์ฒ ์ ํ ํต์ , ๋ณ๊ฒฝ ์์๋ ์๋ณธ์ ๋ณต์ ํ๊ณ ๋ณต์ ํ ๋ฐ์ดํฐ๋ฅผ ์์ ํ์ฌ ์๋ก์ด ์๋ณธ์ ๋ง๋๋ ๋ฐฉ์์ ์ฌ์ฉ -> ๋ ๋ฆฝ์ ์ธ ์ํ๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ Undo, redo๋ฅผ ๋งค์ฐ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
๋ฆฌ๋์ค ์ฌ์ฉ ์ ์ด์ ์ํ๊น์ง ๊ผผ๊ผผํ ๋ ์ฝ๋ฉ ํ์ฌ ๋๋ฒ๊น ์ ์ด์ ์ํ์ ๋ํ ์ฐธ์กฐ๋ฅผ ํตํด ๋ฌธ์ ํด๊ฒฐ์ ๋ณด๋ค ์ฝ๊ฒ ํ ์ ์๋ฐ..
ํซ ๋ชจ๋ ๋ฆฌ๋ก๋ฉ - ์๋์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ด ์ ํ๋ฆฌ์ผ์ด์ ใ ์ ๋ฐ์๋๋ ๊ฒ. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌํ๋ ์ ๋์ง๋ง ๋ฐ์ดํฐ๋ ์ ์ง๋์ด ๋ค์ ์ ๋ ฅํ ํ์๊ฐ ์๋ค. ๊ฐ๋ฐ ํธ์์ฑ ํฌ๊ฒ ํฅ์
State์ Render
Redux์ ํต์ฌ์ Store๋ค. Store์ State๊ฐ ์ ์ฅ๋๋ ๊ณณ. State์ ์ง์ ์ ์ํ๋ ๊ฒ์ ์ ๋์ ๋ ์ ๋ ์๋๋ค.
Store์ ๋ง๋ค ๋๋ Reducer์ ๋ง๋ค์ด์ ๊ณต๊ธํด์ฃผ์ด์ผ ํ๋ค.
createStore -> store ์์ฑ, ์ธ์๋ก reducer์ ๊ผญ ์ฃผ์ด์ผ ํ๋ค.
Render์ Redux์ ์๊ด ์์ด UI๋ฅผ ๋ง๋๋ ์ญํ ์ ํ๋ ๋ด ์ฝ๋^^
'๐๏ธํ๋ก๊ทธ๋๋จธ์ค ๋ฐ๋ธ์ฝ์ค > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ๋ธ์ฝ์ค] react task app 2 (0) | 2025.06.21 |
---|---|
[๋ฐ๋ธ์ฝ์ค] ๋ฆฌ์กํธ task app ๊ตฌํ 1 (0) | 2025.06.17 |
[๋ฐ๋ธ์ฝ์ค] React ๊ธฐ์ด ํต์ฌ ์ ๋ฆฌ(state, ๊ตฌ์กฐ ๋ถํด ํ ๋น, ์ปดํฌ๋ํธ ๋ฐ๋ณต) (1) | 2025.06.15 |
[๋ฐ๋ธ์ฝ์ค] React์ JSX, UI ํจ๋ฌ๋ค์์ ์ ํ (1) | 2025.06.14 |
[๋ฐ๋ธ์ฝ์ค] ํ์ ์คํฌ๋ฆฝํธ: ๊ฐ์ฒด ๋ฆฌํฐ๋ด๋ถํฐ ํด๋์ค๊น์ง (0) | 2025.06.11 |