[React Native] Redux๋? (feat. Flux)
Redux๋?
Javascript ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ํ ๊ด๋ฆฌ๋ฅผ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค.
์ฌ๊ธฐ์ "์ํ?๋ ๋ฐ๋๋ ์ด๋ค ๊ฐ๋ค์ ์๋ฏธํ๋๋ฐ์.
์๋ฅผ ๋ค๋ฉด ๊ณ์ฐ๊ธฐ์์ ์ด๋ค ๋ฒํผ๋ค์ ๋๋ฅด๋ฉด ๊ณ์ฐํ ๊ฐ์ด ๊ณ์ํด ๋ฌ๋ผ์ง์ฃ ?
๋ฐ๋ก ๊ณ์ฐํ ๊ฐ์ด => ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ์ํ์ธ ๊ฒ ์ ๋๋ค.
Flux๋?
Redux๋ Facebook์ Flux ๋์์ธ ํจํด์์ ์ ๋๋ ๊ฒ์ธ๋ฐ์.
Flux๋ Web ์ดํ๋ฆฌ์ผ์ด์ ์ MVC ํจํด์ผ๋ก ๊ตฌํํ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ณ ์ ๋ง๋ค์ด ์ก์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ ํ ๋ฌธ์ ๋ค์ด ๋ฐ์ํ์๊น์?
๊ธฐ์กด MVC๋ ์๋์ ๊ฐ์ด Model๊ณผ View๊ฐ ์๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์ต๋๋ค.
ํ์ง๋ง ์ฑ์ด ์ปค์ง๋ฉด ์ปค์ง์๋ก Model๊ณผ View์ ์๋ฐฉํฅ ์ํต์ด ๋์ด๋ฌ๊ณ , ์ด๊ฒ์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋น ๋ฅด๊ฒ ์ ํํ๊ธฐ๊ฐ ํ๋ค์์ฃ .
๊ทธ๋์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ๋์จ ๊ฒ์ด ๋ฐ๋ก ์๋์ ๊ฐ์ด Flux ๋์์ธ ํจํด์ ๋๋ค.
์ฌ์ฉ์๊ฐ ์ด๋ค Action์ ์ฃผ๋ฉด => Dispatcher๊ฐ ๋์น์ฑ์ Action์ ํด์ํ๊ณ => Store์ ์ํ๋ฅผ ์ ์ฅํด ๋์ ๋ค => View์ ํด๋น ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์์ ์๋ฐฉํฅ์ผ๋ก ๋ณต์กํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
Redux(Reducer + Flux)
๊ทธ๋ ๋ค๋ฉฐ ๋ค์ Redux๋ก ๋์์์ Redux๋ Flux์์ ์ด๋ค ๊ฒ๋ค์ด ๋ฌ๋ผ์ง ๊ฑธ๊น์?
๊ธฐ์กด์ Flux ๋์์ธ ํจํด์ Reducer๋ผ๋ ๊ฒ์ด ์ถ๊ฐ๋ ๋์์ธ ํจํด์ ์๋ฏธํ๋๋ฐ์.
์๋์ ๊ฐ์ด ์ฌ์ฉ์์ Action์ด ๋ฐ์ํ๋ฉด => Reducer๊ฐ Action ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ๊ณ => Store๋ ๊ฐ๊ณต๋ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ์ ์ฅํ๊ณ => View์ ๋ฐ์ํฉ๋๋ค.
์ฐจ์ด์ ์ ๋ณด๋ฉด Flux๋ ๋ง์ Store๋ฅผ ๊ฐ์ง๊ณ dispatcher๋ฅผ ์ด์ฉํด ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ฐ์.
๋ฐ๋ฉด Redux๋ ํ Store๋ฅผ ๊ฐ์ง๊ณ dispatcher๊ฐ ํ์์์ผ๋ฉฐ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉด ์ด๋ป๊ฒ ์ํ๋ฅผ ๋ฐ๊ฟ ์ ์์๊น์?
๋ฐ๋ก ์ํ๋ฅผ ์์ ํ๊ณ ์ถ์ ๋ ์๋ก์ด ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด ์ํ๋ฅผ ์์ ํ ๋ค ์๋ก์ด ์ํ๋ฅผ ๋ฐํํ์ฌ ์ํ๋ฅผ ๋ฐ๊ฟ๋๋ค.
Redux๊ฐ ์ ํ์ํ ๊น?
์ Flux์ ๋ฌธ์ ์ ๊ฑฐ์ ๋์ผํ๋ฐ์.
์๋์ ๊ฐ์ด ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์ ๋ง์ ์ปดํฌ๋ํธ๋ค์ ๊ฑฐ์ณ์ผ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์์ต๋๋ค.
์ฝ๊ฒ ๋งํด ํ ๋จธ๋ - ์๋ง - ๋ธ์ด ์๋ค๊ณ ํ๋ฉด ํ ๋จธ๋๊ฐ ๋ฐ๋ก ์๋ ํํ ์ ๋ฌผ์ ์ฃผ๊ณ ์ถ์๋ฐ, ์๋ง๋ฅผ ๊ฑฐ์ณ ์์ํํ ํญ์ ์ค์ผ ํ๋ ๊ฒ์ด์ฃ .
ํ์ง๋ง Redux๋ฅผ ์ฌ์ฉํ๋ฉด Action์ Reducer๋ก ์ ๋ฌํ๊ณ ๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ Store์ ์ ์ฅํ ๋ค ๊ณง ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๋ฐ๊ฟ์ค ์ ์์ต๋๋ค.
์ ์์์ ๊ฐ์ด ํ ๋จธ๋ - ์๋ง - ๋ธ์ด ์๋ค๋ฉด ํ ๋จธ๋๊ฐ Store์ ๋งก๊ธฐ๊ธฐ๋ง ํ๋ฉด ์๋ ํํ ์ ๋ฌ๋๋๋ก ํ๋ ๊ฒ์ด์ฃ !
์ด์ ๊ฐ์ด ํจ์จ์ ์ผ๋ก ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ธฐ ๋๋ฌธ์ Redux๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ ๋๋ค.