๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+85] Redux ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2021. 1. 11.

 

 

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

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€