React, Flux ํŒจํ„ด์ด๋ž€? ๐Ÿค”

date
Apr 3, 2022
slug
react-flux-pattern
summary
Flux ํŒจํ„ด ์•Œ์•„๋ณด๊ธฐ
thumbnail
status
publish

MVC ํŒจํ„ด์˜ ํ•œ๊ณ„

notion image
MVC ํŒจํ„ดย ์€ย Model์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‘๊ณ ,ย Controller๋ฅผ ์ด์šฉํ•ดย Modelย ๋ฐ์ดํ„ฐ ์ˆ˜์ • ๋ฐ ์ ‘๊ทผ, View๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
Model - View ์˜์กด์„ฑ (์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ)ย ๋†’์Œ
notion image
์ด๋Ÿฌํ•œ ๊ด€๊ณ„๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ๋Š˜์–ด๊ฐ์— ๋”ฐ๋ผย Model,ย Viewย ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ฒŒ ๋˜๊ณ , ์ด๋Š” ๊ฒฐ๊ตญย ๋ฐ์ดํ„ฐ ํ๋ฆ„์˜ ๋ณต์žก๋„๊ฐ€ ๋Š˜์–ด๊ฐ€๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ์ ์ด ๋ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ํ๋ฆ„์€ ์‚ฌ์šฉ์ž, ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•˜๋Š”ย ๋ฒ„๊ทธ๋ฅผ ์•ผ๊ธฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Facebook Notification ๋ฒ„๊ทธ ๐Ÿชฒ

notion image
Facebook ์šฐ์ธก ์ƒ๋‹จ (Header), ์ƒˆ๋กœ์šด ๋ฉ”์„ธ์ง€ ์•Œ๋ฆผ์ด ์žˆ์ง€๋งŒ ํ™•์ธ์„ ํ•ด๋„ ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๊ฐ€ ์—†๋Š” ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. ํ™•์ธ์„ ์œ„ํ•ดย ๋ฉ”์„ธ์ง€ ๋ฆฌ์ŠคํŠธย ์— ๋“ค์–ด๊ฐ€๋ฉด ์•Œ๋ฆผ์€ ์‚ฌ๋ผ์ง€์ง€๋งŒ, ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์•Œ๋ฆผ์ด ๋‹ค์‹œ ๋‚˜ํƒ€๋‚˜๊ณ  ์—ฌ์ „ํžˆ ์•„๋ฌด๋Ÿฐ ๋ฉ”์‹œ์ง€๋„ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œย ๋ฒ„๊ทธ๋Š” ๊ฒฐ๊ตญย MVC์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ณต์žกํ•˜๊ฒŒ ์–ฝํžŒย Model - View ๋ฐ์ดํ„ฐ ํ๋ฆ„์—์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ค˜์•ผํ•˜๋Š”ย View๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋ธ์„ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ์—…๋ฐ์ดํŠธ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์œ„ย ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉดย ๋ฉ”์„ธ์ง€ ๋ฆฌ์ŠคํŠธ Modelย ๊ณผย facebook ์šฐ์ธก ์ƒ๋‹จ (Header) Modelย ์—๋„ย ๊ด€๊ณ„์„ฑ์ด ์กด์žฌํ•ด์•ผ ๊ฒ ์ฃ ..? โžก๏ธย ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ๋”์šฑ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ๐Ÿ˜…

๐Ÿ˜Ž Flux ํŒจํ„ด ์˜ ๋“ฑ์žฅ

notion image
Facebook ํŒ€ย ์ด ์ด๋Ÿฌํ•œ ๋ฒ„๊ทธ๋ฅผ ๊ฐ€๋งŒํžˆ ๋‘˜๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
Flux ํŒจํ„ดย ์€ย MVC ํŒจํ„ดย ์˜ ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ํŒจํ„ด์„ ๋Œ€์ฒด ํ•  ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

์ž‘๋™๋ฐฉ์‹

Action์ด Dispatcher์—๊ฒŒ ํŠน์ • ์‚ฌ์šฉ์ž Action ์ „๋‹ฌDispatcher๋Š” ํŠน์ • Action Type ํŒŒ์•… ํ›„ Store์— ์ „๋‹ฌStore๋Š” Dispatcher์—๊ฒŒ ์š”์ฒญ์— ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ์ˆ˜์ •View๋Š” Store์˜ ๋ณ€ํ™”๊ฐ€ ๊ฐ์ง€๋˜๋ฉด View๋ฅผ ์—…๋ฐ์ดํŠธ

Action

์‚ฌ์šฉ์ž์˜ View์—์„œ์˜ ํ–‰๋™์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. Action ์ •๋ณด๋ฅผ ๊ฐ–๊ณ ์ž‡๋Š”ย ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด Dispatcher์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

Dispatcher

Flux์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ย Action์ด ๋„˜์–ด์˜ค๋ฉดย Action์„ ๊ตฌ๋ถ„ํ•˜์—ฌย Store์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.

Store

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ย ๋ชจ๋“  ์ƒํƒœ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
Store๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉดย Viewย ์— ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
Store๋Š” ํ•„์š”์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

View

๊ธฐ์กด View ์„ฑ๊ฒฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋™์‹œ์—,ย ์ปจํŠธ๋กค๋Ÿฌ-๋ทฐ (Controller-View)ย ๋กœ์„œย ์ตœ์ƒ์œ„ View์—์„œ Store์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์ด๋ฅผ ์ž์‹ View ๋กœ ๋‚ด๋ ค๋ณด๋‚ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.