React query with CRUD ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์ ์ดํดํ ๋ถ๋ถ์ ์ ๋ฆฌํ๊ณ , ๊ฐ ํฌ์ธํธ๋ณ๋ก ๋ด๊ฐ ์ง์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ ์ฉํ๋ ๊ธฐ์ ๊ณผ ๊ฒช์๋ ๋ฌธ์ ๋ค์ ๋ค์ ํ ๋ฒ ์ดํด๋ณด๊ณ ์ ํ๋ค. ํญ์ ์๋ง์ ์ํ์ฐฉ์ค ๋์ ์ด์ฐ์ ์ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ ์๋ํ๊ณ ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์ฉํด ์์ง๋ง... ๋ด ๊ฒฌํด๋ฅผ ๋งํ๊ณ , ๊ณผ์ ๋ก ๋ฐ์ TypeScript์ NodeJs๋ก ๊ตฌ์ถ๋ ํฌ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ ์ํด 6๊ฐ์ ๊ฐ ๋ฐฐ์ฐ๊ณ ์ตํ๋ ์คํฌ๋ค์ ์ด๋ค ์ํฉ์์ ์ ์ผ๊ณ , ์ด๋ป๊ฒ ์ผ๋์ง ๋ณต๊ธฐ๊ฐ ํ์ํ ์์ ์ด๋ผ๊ณ ์๊ฐ์ด ๋๋ค.
์น ์ฑ์ ์ปดํฌ๋ํธ ๋จ์๋ก ๊ฐ๋ฐ์ด ๋๋ค. ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ ๋ด๋ถ์ ์ํ์ ๋ฐ์ดํฐ๋ค์ด ๋จผ ๊ณณ์ ๋จ์ด์ง ์ปดํฌ๋ํธ๋ก ์ ๋ฌ๋๊ธฐ๋ ํด์ผํ๊ณ , ๋ชจ๋ ์ปดํฌ๋ํธ๋ค์ด ๊ณตํต์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ ์ํ์ ๋ฐ์ดํฐ๋ ์๋ค.
ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ์ ์ ์ปค์ง์๋ก ์ ๋ฐ์ดํธํ๊ณ ์ฃผ๊ณ ๋ฐ์ผ ํ ์ ๋ณด๋ ์ ์ ๋์ด๋๋ค. ์ํ ๊ด๋ฆฌ์ ์คํจํ๋ฉด ์ฌ๊ธฐ์ ๊ธฐ์ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๊ฒ ๋ ์ ์๊ณ , ์ด๋ก ์ธํด ์ ํฉ์ฑ์ด ๊นจ์ง๊ฑฐ๋ ์ต์ ํ ๋์ง ์์ ์ ๋ณด๊ฐ ํ๋ฉด์ ํ์๋๊ธฐ๋ ํ๋ค. ์ด๋ฟ๋ง์ด ์๋๋ค. ์ด๋ฌํ ์ ๋ณด๋ค์ ์ ๋ฐ์ดํธ๊ฐ ๋ ๋๋ง๋ค ๋ ๋๋ง์ ์ผ์ผํค๊ธฐ ๋๋ฌธ์ ์น์ ์ฑ๋ฅ๊ณผ๋ ์ง์ ์ ์ผ๋ก ์ฐ๊ด์ด ์๋ค.
๋ถ๋ชจ ์ปดํฌ๋ํธ๋ถํฐ ์์ ์ปดํฌ๋ํธ๊น์ง props๋ก ํจ์์ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ํด์ ๋ด๋ ค๋ณด๋ธ ์ ์ด ์๋ค. ์ปดํฌ๋ํธ์ ์๊ฐ ์ ์ ๋๋ ์์ด ๋ญ ์ด์ ๋์ผ ํ๋ฉด์ ๋ด๋ ค๋ณด๋๋๋ฐ ๋ฉ๋ด๊ฐ ํ๋์ฉ ์ฆ๊ฐํ ๋๋ง๋ค, ์ปดํฌ๋ํธ์ ์๊ฐ ์ฆ๊ฐํ ๋๋ง๋ค ์ด๊ฒ ๋ง๋? ์ถ์ ์๊ฐ์ด ๋ค๊ธฐ ์์ํ๋ค.
์ต์ข ์์ ์ปดํฌ๋ํธ์ props๊ฐ ๋์ฐฉํ์ ๋... ์ด์ฐ์ ์ฐ ๋์ฐฉ์ ํ๊ธด ํ๋๋ฐ ์ด ํจ์์ ๋ฐ์ดํฐ๊ฐ ๋ญ์ง, ๋๋์ฒด ์ด๋์๋ถํฐ ๋ด๋ ค๋ณด๋ธ๊ฑด์ง, ๋๋ ์์ ์ฌํญ์ด ์๊ฒผ์ ๋ ํ์ธํ๊ธฐ ์ํด ์ต์๋จ ์ปดํฌ๋ํธ๊น์ง ์ถ๋ ธํ๋ ๊ณผ์ ์ด ๋์ฐํ๋ค. ๊ฒ๋ค๊ฐ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ๋์ฒด ์ด๋์ ๋ฌธ์ ๊ฐ ์๊ธด ๊ฑด์ง๋ ํ์ ์ด ๋๋ฌด ํ๋ค์๋ค. ์์ค ์ฝ๋๊ฐ ๋๋ฌ์์ง๋ ๊ฑด ๋ฌผ๋ก ์ด์๋ค.
์ปค๋ฐ ๊ธฐ๋ก์ ๊ฐ์ ธ์๋ค. ์ฐ์ด์ ์ฒ์ ํ๋ก ํธ์๋์ ์ ๋ฌธํ์ ๋ ์งฐ๋ ์ฝ๋๋ค. ์๋ง์ ์ํ๋ค๊ณผ ์๋น์ค์ ์ก์ ํจ์๋ค... ์ ๊ธฐ๋ง ์ ๋ฌ์ผ๋ฉด ์๋ฐ์ด๋ค. ์ ๋ฐ ํํ์ props ์ง์ฅ์ด ๋๋ค์์ ์ปดํฌ๋ํธ์์ ์ผ์ด๋๊ณ ์์๋ค...๐คข
props๋ก ๋ด๋ ค๋ฐ์ ์ ๋ณด๋ค์ ์ถ๋ ธํ๊ณ ์๋ฌ๊ฐ ๋ฐ์ํ ์ง์ ์ ์ถ๋ ธํ๊ณ ๊ณ ์น๊ณ ๋ฅผ ๋ฐ๋ณตํ๋ค ๋ณด๋ ๋ณธ๋ฅ์ ์ผ๋ก ์ด๊ฑด ์๋๋ค๋ผ๋ ๊ฑธ ๊นจ๋ฌ์๋ค. ๊ทธ๋์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์๋ค.
๋ํ์ ์ผ๋ก ๋ฆฌ๋์ค์ ๋ฆฌ์ฝ์ผ์ด ์์๋๋ฐ ๋๋ ๋ฆฌ๋์ค๋ฅผ ์ ํํ๋ค. ๋ฆฌ๋์ค๊ฐ ๋์จ์ง ์ค๋๋ ๋งํผ ์ฐ๋ ํ์ฌ๊ฐ ๋ง์๊ณ ๊ด๋ จ ์ํ๊ณ๊ฐ ์ ๊ตฌ์ถ๋์ด ์๊ธฐ ๋๋ฌธ์ด์๋ค. ์ฒซ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฌธ์ธ๋งํผ ์์ ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ๋ค.
๋ฆฌ๋์ค๋ฅผ ์ฐ๋ฉด ์ข์ ๊ฒ๋ ์๊ฒ ๊ณ , ์ฐ๋ ์ฌ๋๋ ๋ง๊ณ ์ํ๊ณ๋ ์ ๋ฐ๋ฌ๋์ด ์์ผ๋ ์กฐ๊ธ๋ง ์์นญํ๋ฉด ๊ธ๋ฐฉ ์์ฉํด์ ๋ฐ๋ผํ ์ ์์ ๊ฒ ๊ฐ์๋ค. ํ์ง๋ง ๋ฆฌ๋์ค์ ๋์ ๋ฐฉ๋ฒ๊ณผ ๊ฐ๋ ์ ์ดํดํ๊ณ ์ฌ์ฉํด์ผ ์ด๋ ๊ฐ์ '๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.' ๋ผ๊ณ ์์ ์๊ฒ ๋งํ ์ ์์ง ์์๊น ์ถ์๋ค.
๋ฆฌ๋์ค๋ฅผ ์ดํดํ๋ ค๋ฉด MVC ํจํด๊ณผ Flux ํจํด์ ๋ํ ์ดํด๊ฐ ํ์ํ๋ค. MVC ํจํด์ ํ๊ณ๋ก ๋์ค๊ฒ ๋ ๊ฒ์ด Flux ํจํด์ด๊ณ , Redux๊ฐ Flux ํจํด์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
MVC ํจํด๊ณผ FLUX ํจํด์ ๋ํด ๊ณต๋ถํ ๊ธฐ๋ก โจ
https://velog.io/@kina/FLUX-%ED%8C%A8%ED%84%B4
๊ณต๋ถํ ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก ๋ด๊ฐ ์ข ๋ ์ดํดํ ๋ถ๋ถ์ ์ถ๊ฐํด์ ๋ณต๊ธฐํด๋ณด์.
MVC ํจํด์ ์๋น์ค๊ฐ ์ปค์ง์๋ก ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ฉด์ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ํ๊ธฐ ์ํด ๋์ค๊ฒ ๋ ๋์์ธ ํจํด์ด๋ค. ๊ตญ๊ฐ๊ธฐ๊ด์ ์ ๋ฒ, ์ฌ๋ฒ, ํ์ ์ผ๋ก ๋๋๋ ๊ฒ์ฒ๋ผ MVC ํจํด๋ Model, View, Controller๋ก ๋๋์ด์ ์ ๊ทผํ๋ ๋ฐฉ์์ด๋ค.
View๋ ๋์ ๋ณด์ด๋ ๊ฒ, HTML๊ณผ CSS์ ํด๋นํ๋ ๋ถ๋ถ์ด๊ณ MODEL์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ถ๋ถ์ด๋ค. Controller๋ Model๊ณผ View ์ฌ์ด์์ ๋์ ์กฐ์ ํ๋ ์ญํ ์ ๋งก๋๋ฐ Model๊ณผ View๋ ์๋ก์ ์กด์ฌ๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ Controller๋ฅผ ํตํด์๋ง ์ํตํ ์ ์๋ค. ๊ฒ์ํ์ ํตํด ์๋ฅผ ๋ค๋ฉด ์ข ๋ ์ดํด๊ฐ ์ฝ๋ค.
์์ ์ค์ธ ํ๋ก์ ํธ์ธ ์๊ฐ๋๋ผ์ ๊ฒ์ํ์ด๋ค. ๊ฒ์ํ์์ ์ฐ์ด๊ณ ์ฝํ๊ณ ์์ ๋๋ ๊ธ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ์ด ๋๋ค.
์ด ๋ฐ์ดํฐ์ ํ์์ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ์์ ๋ค์ด Model์ ํด๋นํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณผ ์ ์๋๋ก ํด์ฃผ๋ HTML, CSS ์์๊ฐ View๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ค์ด ์ฝ๊ณ ์ฐ๊ณ ์ง์ฐ๊ฒ ํ ์ ์๋๋ก ํด์ฃผ๋ ๋ถ๋ถ์ด Controller์ ํด๋นํ๋ค.
Contoller๊ฐ Model์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ , Model์ด Controller์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๋ฉด Controller๊ฐ View์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ View๊ฐ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ ์ผ๋ก ์งํ๋๋ค.
๋ฌธ์ ๋ ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์๋ก์ ์กด์ฌ๋ฅผ ๋ชฐ๋ผ์ผ ํ๋ Model๊ณผ View๊ฐ ์๋ก๋ฅผ ์ํตํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ณ , ํ๋์ Controller์ ๋ค์์ Model๊ณผ View๊ฐ ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋๋ฉด์ Controller๊ฐ ๋น๋ํด์ง๋ ์ํฉ์ด ๋ฐ์ํ๋ค.
๊ทผ๋ฐ... ๋ญ๊ฐ ์ด์ํ๋ค?๐ค
๊ณต๋ถํ๋ค ๋ณด๋๊น 1) ์ด๋ค ์ฌ๋์ MVC ํจํด์ด Model๊ณผ View๊ฐ ์๋ก๋ฅผ ์
๋ฐ์ดํธ ํ๋ค๊ณ ํ๊ณ , 2) ์ด๋ค ์ฌ๋์ Model๊ณผ View๋ ์๋ก๋ฅผ ๋ชจ๋ฅด๊ณ Controller๋ฅผ ํตํด์๋ง ์ํตํ๋ค๊ณ ํ๋ค.
??? View์ Model์ด ์๋ก๋ฅผ ๋ชฐ๋ผ์ผ ํ๋ค๋ฉด์์... ์ด๊ฒ ์ด๋ป๊ฒ ๋ ์ผ์ธ๊ฐ ์ถ์ด ์ฐพ์๋ดค๋ค.
1๋ฒ ๊ทธ๋ฆผ
2๋ฒ ๊ทธ๋ฆผ
์๊ณ ๋ณด๋๊น ์๋ MVC ํจํด์ 2๋ฒ ํํ์ธ๋ฐ, MVC ํจํด์ด ๋ง์ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ธํด ํด๋ผ์ด์ธํธ ์ฌ์ด๋๋ก ๋์ด์ค๊ฒ ๋๋ฉด์ 1๋ฒ๊ณผ ๊ฐ์ ์๋ฐฉํฅ ์ํต์ผ๋ก ๋ณํํ๊ณ , ์ค์ ๊ตฌํ๋ ๋๋ ์๋ฐฉํฅ ์ํต์ ์ฌ์ฉํ MVC ํจํด์ด ์ ์ฉ๋๋ค๊ณ ํ๋ค.
์ดํ ์์ฑํ facebook์ FLUX ํจํด๋ MVC ํจํด์ ์๋ฐฉํฅ ์ํต์ ๋ฌธ์ ์ ๋๋ฌธ์ ๋ฑ์ฅํ๊ธฐ ๋๋ฌธ์, ์ด ๊ธฐ๋ก์์ ์ธ๊ธ๋๋ MVC ํจํด์ ์๋ฐฉํฅ์ผ๋ก ์ํตํ๋ MVC ํจํด์ ์๋ฏธ๋ฅผ ๋ฐ๋ฅด๊ฒ ๋ค.
facebook์ MVC ํจํด์ด ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ํ์ฅ๊ณผ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค๊ณ ๊ฒฐ๋ก ์ ๋ด๊ณ FLUX ํจํด์ ๋ง๋ค๊ฒ ๋๋ค. ๊ทธ๋ ๊ทธ๋ด ๊ฒ์ด MVC ํจํด์ ๋ชจ๋ธ๊ณผ ๋ทฐ์ ์ปจํธ๋กค๋ฌ๊ฐ ์๋ก๋ฅผ ์ ๋ฐ์ดํธ ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋ณต์กํ๋ค.
MVC ํจํด์ MODEL๊ณผ VIEW๊ฐ ์๋ก๋ฅผ ๋ฐ์ํ๋ ์๋ฐฉํฅ ํ๋ฆ์ธ ๊ฒ์ ๋ฐํด FLUX ํจํด์ ๋จ๋ฐํฅ ํ๋ฆ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ํ ์ ์๋ค.
๊ฐ ์์๋ค์ ๋ํ ์ค๋ช
๋ณด๋ฌ๊ฐ๊ธฐ โจ
https://velog.io/@kina/FLUX-%ED%8C%A8%ED%84%B4
๊ทผ๋ฐ ์ด๋ ๊ฒ๋ง ๋ณด๋ฉด ์ ์๋ฟ์ง๊ฐ ์๋๋ค. ๊ด๋ จ ์ ํ๋ธ ์์์ ๋ณด๋๊น FLUX ํจํด์ ๋ฉ์ธ์ง๋ฅผ ์๋ฅผ ๋ค์ด์ ์ค๋ช ํด ์ฃผ์ จ๋๋ฐ ๋ง์นจ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ ์ชฝ์งํจ์ ๊ตฌํํ ์ ์ด ์์ด ๋ฉ์ธ์ง๋ก ํ ๋ฒ ์์๋ฅผ ๋ค์ด๋ณด๊ณ ์ ํ๋ค.
์ดํ ์ฒจ๋ถํ๋ ์ฐธ๊ณ ์ฌ์ง๊ณผ ์๋ฃ๋ค์ ์ฐ์ํ ํ
ํฌํก ์ฐ๋๋์ Flxu Architecture ์ ํ๋ธ์์ ๋ฐ์ทํ์์ต๋๋ค.
(https://www.youtube.com/watch?v=wQFBgKl1PYw)
์๊ฐ๋๋ผ์ ๋ฉ์ธ์ง ๋ทฐ๋ค. ํ์ฌ ๊ตฌํ๋ ๊ธฐ๋ฅ์ ์๋์ ๊ฐ๋ค.
1) ์๋ก์ด ๋ฉ์ธ์ง๊ฐ ์ค๋ฉด ์ข์ธก ์ชฝ์งํจ ๋ถ๋ถ์ ํด๋นํ๋ ์ฌ์ฉ์ ๋๋ค์ ์์ ์๋ก์ด ๋ฉ์ธ์ง๊ฐ ์๋ค๋ ์๋ฆผ๊ณผ ๋ฉ์ธ์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ๋ฌ๋ค.
2) ์๋ก์ด ๋ฉ์ธ์ง๊ฐ ์ค๋ฉด ์๋จ ๋
๋ฐ์ ์ฐํธ๋ฌผ ์์ด์ฝ์ ์ ์ฝ์ ๋ฉ์ธ์ง ๊ฐ์๊ฐ ๋ฌ๋ค.
3) ๋ฉ์ธ์ง๊ฐ ์ฝ์ ์ฒ๋ฆฌ ๋๋ฉด ์ข์ธก ์ชฝ์งํจ๊ณผ ์๋จ ๋
๋ฐ์ ์ฐํธ๋ฌผ ์์ด์ฝ์ ๋ฉ์ธ์ง ๊ฐ์๊ฐ ์ฌ๋ผ์ง๋ค.
4) ํด๋น ์ฑํ
์ด ํ์ฑํ ๋ผ์๋ ์ํ์์ ์๋ก์ด ์ชฝ์ง๊ฐ ์ค๋ฉด ๋ฐ๋ก ์ฝ์ ์ฒ๋ฆฌ๊ฐ ๋๋ค.
์๋๋ผ๋ฉด ํ๋์ ๋ฉ์์ง ํธ๋ค๋ฌ๊ฐ ๋ชจ๋ ๊ฒ์ ๋ด๋นํด์ ๋ทฐ์๊ฒ ๋ช ๋ นํ๋ค. ๋ฉ์ธ์ง ์์ผ๋๊น ์ฑํญ์ด๋ ๋ฉ์ธ ๋ฉ์์ง ๋ทฐ๋ ๋ฉ์ธ์ง ์ถ๊ฐํด. ์ฝ์๋? ์ฝ์์ผ๋ฉด ์ฝ์ ์ฒ๋ฆฌํด. ์ฝ์ ์ฒ๋ฆฌํ์ผ๋ฉด ์ฝ์ง ์์ ์นด์ดํฐ ๊ฐ์์์ผ.
๋ง์ฝ์ ๋ฉ์ธ์ง์ ๊ด๋ จ๋ ๋ทฐ๊ฐ ์ ์ ์ฆ๊ฐํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น? ๋ฉ์์ง ํธ๋ค๋ฌ์ ๊ธฐ๋ฅ์ด ์ ์ ๋น๋ํด์ง๋ฉด์ ํด์ผ ๋ ์ผ์ด ๋ง์์ง๊ธฐ ๋๋ฌธ์ ์์ฃผ ๋ฐ๋น ์ ์ ์ด ์์ ๊ฒ์ด๊ณ ๋ช ๋ น์ ์ ๋ฌํ๋ ๊ณผ์ ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ๋ทฐ๋ผ๋ฆฌ๋ ์ํฅ์ ๋ฏธ์น ์ ์๋ค. ์ฆ, ์์คํ ์ ํ์ฅ๊ณผ ์ ์ง๋ณด์๊ฐ ํ๋ค์ด์ง๋ค.
๊ทธ๋์ Flux ํจํด์์๋ ํ๋์ ๋ฉ์์ง ํธ๋ค๋ฌ๋ฅผ ํตํ ๋ทฐ ์ ๋ฐ์ดํธ๊ฐ ์๋๋ผ, ๊ด๋ จ๋ ์ ์ญ ์ ์ฅ์๋ฅผ ํ๋์ฉ ๊ฐ์ง๊ฒ ๋๋ค. ๊ฐ๊ฐ์ ์ ์ญ ์ ์ฅ์๋ ์์ ๊ณผ ๊ด๋ จ๋ ์ํ๋ง์ ์ ๋ฐ์ดํธ ํ๋ ๋ก์ง์ ๊ฐ์ง๋ค.
์ด๋ฌํ ๊ตฌ์กฐ์์๋ ๋์ด์ ๋ฉ์ธ์ง ํธ๋ค๋ฌ๊ฐ ์ฑํ ์ฐฝ์ด ์ด๋ ค์๋์ง, ๋ทฐ๊ฐ ๋ฉ์์ง๋ฅผ ์ฝ์๋์ง ์ ์ฝ์๋์ง ๋ชจ๋ ํ์ธํ๊ณ ๋ช ๋ นํ์ง ์์๋ ๋๋ค. ๊ฐ๊ฐ์ ๋ทฐ๊ฐ ์ฝ์๋์ง ์ ์ฝ์๋์ง๋ฅผ ํ๋จํ์ฌ ์ ์ฅ์์๊ฒ '๋ ๋ฉ์ธ์ง ์ฝ์์ด'๋ผ๊ณ ์ง์ ์ก์ ์ ๋ณด๋ผ ์ ์๋ค.
์ฑํญ๊ณผ ๋ฉ์ธ ๋ฉ์ธ์ง ๋ทฐ๋ '์ฝ์์ผ๋ก ํ์' ์ก์ ์ '์ฝ์ง ์์ ์ค๋ ๋๋ค' ์ ์ฅ์๋ก ๋ณด๋ด๊ณ , ์ ์ฅ์๋ ์ง์ ์ฝ์ ๋ฉ์ธ์ง๋งํผ์ ๊ฐ์์ํค๊ธฐ ๋๋ฌธ์ ์ฝ์ง ์์ ์นด์ดํฐ๋ ์ซ์๋ฅผ ์ธ์ ๋ณด์ฌ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๋จ์ํ๊ฒ ์ ๋ฆฌํ ๋ชจํ์ด๋ค. ์ค๊ฐ์ Dispatcher๋ ์ก์ ์ ์ ์ฅ์๋ก ์ ๋ฌํด์ฃผ๋ ์ญํ ์ ํ๋ค. ๋งจ ์ฒ์์ ์ก์ ์ '์๋ก์ด ๋ฉ์์ง ๋์ฐฉ'์ ํด๋นํ๋๋ฐ, ๋จ์ํ ๋ฉ์์ง์ ๋ด์ฉ์ ๋ด๊ณ ์๋ ๊ฐ์ฒด(ajax๋ ๋ทฐ์์ ๋ฐ์ํ ์ํ ๋ณํ ์ก์ )์ด๊ธฐ ๋๋ฌธ์ ์๊ธฐ ์ค์ค๋ก ์ ์ฅ์๊น์ง ๋๋ฌํ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ ์ ์ฅ์๋ก ์ด๋์์ผ์ค ์ ์๋ Dispatcher๊ฐ ํ์ํ๋ค.
๋ฆฌ๋์ค๋ Flux ํจํด์ ๋ฐ๋ฅด๊ณ ์์ง๋ง Flux ํจํด์ ๊ทธ๋๋ก ๊ตฌํํ์ง๋ ์์๋ค. ๋ฆฌ๋์ค์๋ Dispatcher ๊ฐ๋ ์ด ์๋ค. ๋ฆฌ๋์๊ฐ ๋์คํจ์ฒ์ ์คํ ์ด์ ๊ธฐ๋ฅ์ ๋ชจ๋ ๋ด๋นํ๊ณ ์๋ค.
๋ฆฌ๋์ค์์๋ Dispatcher๊ฐ ์๋ ๋์ ๋ฆฌ๋์๊ฐ ์ํ๋ณํ๋ฅผ ๊ด๋ฆฌํ๋ค. ๋ฆฌ๋์๋ ์ ์ฒด ๋ฆฌ๋์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฃจํธ ๋ฆฌ๋์์ ๊ทธ ํ์์ ์๋ ์๋ธ ๋ฆฌ๋์๋ก ๋๋๋ค. ์๋ธ ๋ฆฌ๋์ ์์๋ ์ํ์ ์ํ๋ฅผ ๋ณํํ๋ ๋ก์ง์ด ๋ด๊ฒจ ์๋ ์คํ ์ด๊ฐ ๋ค์ด์๋ค.
๋ฆฌ๋์ค ์ ์ฉ๊ธฐ โจ
https://velog.io/@kina/%EB%8B%A4%EB%8F%85%EB%8B%A4%EB%8F%85-Redux-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0
Redux๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋์ค ํจํด์ ์ ์ฉํด์ ์ฌ์ฉํ์. (์ ๋งํฌ๋ฅผ ์์ฑํ ๋น์์๋ ๋์ค ํจํด์ ๋ชฐ๋๋ ๋๋ผ ๊ทธ๋ฅ ์ฌ์ฉํ๋ค. ๋ฆฌํฉํ ๋ง ์์ ๐)
Redux์๋ ์ก์ ํ์ (Actions), ์ก์ ์์ฑ ํจ์(Action Creators), ๋ฆฌ๋์(Reducer)๊ฐ ํ์ํ๋ฐ, ๊ฐ๊ฐ์ ์ฝ๋๋ฅผ ๋ค๋ฅธ ํ์ผ๋ก ๋ถ๋ฆฌํด์ ์ฐ๊ฒ ๋๋ค๋ฉด ํ์ผ์ ์ด๋ฆฌ์ ๋ฆฌ ์๋ค๊ฐ๋ค ํ๋๋ผ ์ ์ ๋ ์๊ณ ํ์ ํ๊ธฐ๋ ์ด๋ ค์ด๋ฐ๋ค ํ๋๋ฅผ ์์ ํ๋ฉด ๊ด๋ จํ ํ์ผ์ ๋ชจ๋ ์์ ํด์ผ ๋๊ธฐ ๋๋ฌธ์ ์๋นํ ๋ฒ๊ฑฐ๋กญ๋ค.
๋์ค ํจํด์ ์ก์ ํ์ , ์ก์ ์์ฑ ํจ์, ๋ฆฌ๋์๋ฅผ ํ๋์ ํ์ผ ์์์ ๊ด๋ฆฌํ์ฌ ๋ชจ๋ํ ํ๋ค.
๊ธฐ์กด์ ์์ฑํ๋ ๋ฐฉ์ | ๋์ค ํจํด ์ ์ฉ |
---|---|
![]() | ![]() |
๋์ค ํจํด์ ์๋์ ๊ฐ์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
1. reducer๋ export default๋ก ๋ด๋ณด๋ธ๋ค.
2. action ํจ์๋ export๋ก ๋ด๋ณด๋ธ๋ค.
3. ์ก์
ํ์
์ ์ ์ํ ๋ reducer/ACTION_TYPEํํ๋ก ์ ์ด์ค์ผ ํ๋ค. ์ด๋ ๊ฒ ์ ๋์ฌ๋ฅผ ๋ถ์ฌ์ฃผ๋ ์ด์ ๋ ์๋ก๋ค๋ฅธ ๋ฆฌ๋์์์ ์ก์
์ด๋ฆ์ด ์ค์ฒฉ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด์์ด๋ค.
https://velog.io/@dolarge/React-Redux-Ducks-%ED%8C%A8%ED%84%B4
๋์ค ํจํด ์์ฑ ๋ฐฉ์
/* ------------ ์ก์
ํ์
---------------*/
const CREATE = 'posts/CREATE'
const READ = 'posts/READ'
const UPDATE = 'posts/UPDATE'
const DELETE = 'posts/DELETE'
/* ------------ ์ก์
์์ฑ ํจ์ ---------------*/
export const createPost = (post) => {
return {type: CREATE, post}
}
export const readPost = () => {
return {type: READ}
}
export const updatePost = (post) => {
return {type: UPDATE, post}
}
export const DeletePost = (post) => {
return {type: DELETE, post}
}
/* ------------ ์ด๊ธฐ ์ํ ---------------*/
const initState = {
posts : [],
}
/* ------------ ๋ฆฌ๋์ ---------------*/
export const postsReducer = (state=initState, action) => {
switch(action.type){
//case action...
default: return state
}
}
https://www.youtube.com/watch?v=wQFBgKl1PYw
https://velog.io/@dolarge/React-Redux-Ducks-%ED%8C%A8%ED%84%B4