D+85
- Redux ๊ฐ๋ ์ดํดํ๊ธฐ -
(Store, Action, Reducer)
Redux
• ์๋ฐ์คํฌ๋ฆฝํธ ์ดํ๋ฆฌ์ผ์ด์ ๋ค์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
• ๋ฆฌ์กํธ์ ๋ณ๊ฐ์ด๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด ์์์ ๋ด๊ฐ ์ํ๋ ๊ณณ ์ด๋์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
Redux๋ฅผ ์ฌ์ฉํ๋ ์ด์
๋ง์ฝ์ ์ปดํฌ๋ํธ๊ฐ App.js > VideoList.js > VideoListEntry.js ์์ผ๋ก ์กด์ฌํ๋ค๊ณ ํ๋ค๋ฉด
VideoListEntry์์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๋ถ๋ชจ์ปดํฌ๋ํธ์์ ๊ฐ์ ์ฐจ๋ก์ฐจ๋ก ๋ด๋ ค ์ฃผ์ด์ ๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ค.
๋๋ ํ์ ์ปดํฌ๋ํธ์๊ฒ ๊ฐ์ ๋๊ฒจ ์ฃผ๊ณ ์ถ์ ๋์๋ ์์ ์ปดํฌ๋ํธ๊ฐ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก ์ฌ๋ผ๊ฐ ๋ค์์
๋ค์ ๋ค๋ฅธ ์์ ์ปดํฌ๋ํธ์๊ฒ ๊ฐ์ ์ ๋ฌํด์ผํ์ง๋ง ๊ฐ์ ๋ฐ์ ์ ์์๋ค.
ํ์ง๋ง ์ด๋ด ๊ฒฝ์ฐ์ ๊ฐ๋จํ ์ฝ๋์ผ ๊ฒฝ์ฐ์ ํฐ ๋ฌธ์ ๊ฐ ์์ด๋ณด์ด์ง๋ง
๋ง์ฝ์ ์ปดํฌ๋ํธ๋ค์ด ์๋ฐฑ๊ฐ, ์์ฒ๊ฐ๊ฐ ๋๋ค๋ฉด ๊ต์ฅํ ๋ณต์กํ๊ณ ๊ฐ๋ ์ฑ์ด ์ข์ง ์์ ์ฝ๋๊ฐ ์์ฑ๋ ๊ฒ์ด๋ค.
์ด๋ ๋ง์ฝ์ ๋ถ๋ชจ์ปดํฌ๋ํธ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ง์น ํธ์์ ์ฒ๋ผ ๊ณต๊ฐ์ ๋ง๋ค์ด ๋๊ณ
๊ทธ๊ณณ์์ ๊ฐ์ ๋ถ๋ฌ์ค๊ณ ๋ฐ๊พธ๋ ๊ณผ์ ์ด ์๋ค๋ฉด ํจ์ฌ ๊ฐ๋จํ ๊ฒ์ด๋ค.
๋ฐ๋ก ๋ฆฌ๋์ค๊ฐ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ด๋นํ๊ฒ ๋๋ค.
Store
์ํ๊ฐ ๊ด๋ฆฌ๋๋ ์ค์ง ํ๋์ ๊ณต๊ฐ์ผ๋ก
createStore๋ผ๋ ๋ฉ์๋๊ฐ ์กด์ฌํ๋๋ฐ ์ด๋ Reducer๋ผ๋ ํจ์๋ฅผ ๋ฌ๋ผ๊ณ ์์ฒญํ๋ ๊ฒ์ผ๋ก
์ด๋ Reducer๋ ๋์ ์ํ๋ฅผ ์์ ํ๋ ํจ์๋ฅผ ์๋ฏธํ๋ค.
Store์๋ 4-5 ๊ฐ์ ํจ์๊ฐ ์กด์ฌํ๋๋ฐ ์ด๋ Reducer๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ๊ฐ์ง๋ ค๋ฉด
getState๋ฅผ ์ฌ์ฉํด ์ฃผ๋ฉด ๋๋ค.
subscribe๋ Store์์ ์๋ ๋งค์๊ฐ์ ๋ณํ๋ค์ ํ์ธํ ์ ์๋ค.
Action
์ก์ ์ ์ผ์ข ์ ์ฃผ๋ฌธ์์ ๋น์ทํ ์ญํ ์ ํ๋ ๊ฒ์ผ๋ก action์ ๊ฐ์ ๋ฃ์ด ์ํ๋ฅผ ๋ณํ์ํฌ ์ ์๋ค.
Reducer
Reducer๋ ํ์ฌ ์ํ์ Action์ ์ด์ฉํด ๋ค์ ์ํ๋ฅผ ๋ง๋ค์ด ๋ด๋ ์ญํ ์ ํ๋ค.
์ฆ Reducer๋ Action์ ์ด๋ฐํ๋ ํ์์ ๊ฐ์ ๊ฐ๋ ์ด๋ผ๊ณ ๋ณผ ์ ์๊ฒ ๋ค.
Redux์ ๊ธฐ๋ณธ ๊ฐ๋ : 3 ๊ฐ์ง ์์น
• Single source of truth : ๋์ผํ ๋ฐ์ดํฐ๋ ํญ์ ๊ฐ์ ๊ณณ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์จ๋ค. => Store
• State is read-only : ์ํ๋ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ฆฌ์กํธ์์ ์ฐ๋ฆฌ๊ฐ setState๋ฅผ ํตํด์๋ง ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์๋ฏ์ด ๋ฆฌ๋์ค ๋ํ action์ด๋ผ๋ ๊ฒ์ ํตํด ์ํ๋ฅผ ๋ณ๊ฒฝํด์ค๋ค. => Action
• Changes are made with pure functions : ๋ณ๊ฒฝ์ ์์ํจ์๋ก๋ง ๊ฐ๋ฅํ๋ค => Reducer
'์๋ > Code-States' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+122] Final Project : 2์ผ์ฐจ ํ๋ก์ ํธ ์ฃผ์ ์ ํ๊ธฐ (0) | 2021.02.19 |
---|---|
[D+121] Final Project : 1์ผ์ฐจ ice-breaking (0) | 2021.02.17 |
[D+84] React๋ฅผ ์ด์ฉํด ํฌ๋์ฑ(TO-DO) ๋ง๋ค์ด๋ณด๊ธฐ (2) (8) | 2021.01.10 |
[D+83] React๋ฅผ ์ด์ฉํด ํฌ๋์ฑ(TO-DO) ๋ง๋ค์ด๋ณด๊ธฐ (1) (0) | 2021.01.09 |
[D+82] immersive์ฝ์ค ๋๋ฒ์งธ ํ๊ฐ (0) | 2021.01.09 |
๋๊ธ