*๋น ๊ฐ๋ฐ์๋ฅผ ๋์์ผ๋ก ํ๋ ์ค๋ช ์ผ๋ก ํ์์ ์ข ๋ ์ฝ๊ฒ ์ค๋ช ํ๋ ๋ฐ ์ค์ ์ ๋์ต๋๋ค.
์ผ๋ถ์์ผ์ angular๋ฅผ ์ด์ฉํด์ SPA(Single Page Application)๋ฐฉ์์ผ๋ก ์นํ์ด์ง๋ฅผ ์ค๋นํ๊ณ ์์ต๋๋ค. ํจ๊ป ์ผํ๊ณ ์๋ ๋๋ฃ๋ค์๊ฒ angular์์ ๋ฐ์ํ๋ ๋ ๊ณ ๊ฐ์ component๋ค์ ์กฐํฉ๋ฐฉ์์ ์ค๋ช
ํ๊ณ , ์ฐ๋ฆฌ ๋ธ๋๋๋ฅผ ๋ํํ๋ ์นํ์ด์ง์ ๋ค์์๋ ๊ณผ์ฐ ์ด๋ค ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๊ณต์ ํ๊ธฐ ์ํด ์ด ๊ธ์ ์์ฑํฉ๋๋ค.
๊ณ ๊ฐ์ด ์นํ์ด์ง์ ๋ค์ด์ ๋ฆฌ๋ทฐ๋ฅผ ๋จ๊ธฐ๊ธฐ ์ํด ๋ฆฌ๋ทฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ผ์ด๋๋ ์ผ ๋ค์ ๋น ๊ฐ๋ฐ์์ธ ๋๋ฃ๋ค์ด ์ข ๋ ์ฝ๊ฒ ๊ณต๊ฐํ ์ ์๋๋ก ํ์ด์ ์์ฑํ๋ ค ๋
ธ๋ ฅํ์ต๋๋ค.
[๋ฆฌ๋ทฐ, ๊ทธ ๊ธด ์ฌ์ ์ ์์]
๋จผ์ ์ด๋ฐ ์นํ์ด์ง๊ฐ ์๋ค๊ณ ์๊ฐํด ๋ด
์๋ค.
์ฌ๊ธฐ์ ์ฌ์ฉ์๋ ์๋จ์ reviews๋ฒํผ์ ํด๋ฆญํ๋ฉฐ ์ฌ๋ฌ ๊ณ ๊ฐ์ด ์ด ์ฌ๋ฌ ๋ฆฌ๋ทฐ๋ค์ด ๋์ค๋ ๋ฆฌ์คํธ๋ฅผ ์์ํ ๊ฒ์
๋๋ค. ์ด๋ ๋ฏ ์ฌ๋ฌ ๋ฆฌ๋ทฐ๋ค์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ์ฌ์ ์ ์์์ด ๋ฐ๋ก ์๋จ์ reviews๋ฒํผ์ ํด๋ฆญํ๋ ํ๋์
๋๋ค.
[๋ฆฌ๋ทฐ๋ ๋ค ๊ฐ์ ๋ฆฌ๋ทฐ๊ฐ ์๋์ผ]
๊ณฐ๊ณฐํ ์๊ฐ ํด ๋ณด๋ฉด ๋ฆฌ๋ทฐ๋ผ๋ ํฐ ๋ฉ์ด๋ฆฌ์ ๊ด๋ จ๋ ์ผ๋ค์ ํ๋๊ฐ ์๋๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ฉ์ธ์์ reviews ๋ฒํผ์ ํด๋ฆญํด์ ๋ํ๋ ์ฐฝ์ ๋ณด๋ฉด์ ๋ฆฌ๋ทฐ ๋ผ๋ ํฐ ๋ฉ์ด๋ฆฌ๋ฅผ ์ชผ๊ฐ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
reviews๋ฒํผ์ ํด๋ฆญํ๋ฉด review๋ผ๋ ์๋ก์ด ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ฒ ๋๊ฒ ์ฃ . ๋ณด์ฌ์ค๋ค๋ ๊ฒ์ ์ค์กดํ๋ค๋ ๋ง์ด๋, review๋ผ๋ ์๋ก์ด component๊ฐ ์์ฑ๋๊ณ ํ๋ฉด์ ๋ฟ๋ ค์ง ๊ฒ์ด๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๊ทธ์น๋ง ์ด review component์ ํ๋์ผ์ ์ ์ดํด๋ณด๋ฉด ๋ ์ฌ๋ฌ๊ฐ์ ์กฐ๊ฐ์ผ๋ก ๋๋์ด ๋ณผ ์ ์์ต๋๋ค.
์ฌ๋ฌ ๋ฆฌ๋ทฐ๋ค์ ๋ณด์ฌ์ฃผ๋ review-list component, ๊ทธ๋ฆฌ๊ณ ์๋ก์ด ๋ฆฌ๋ทฐ๋ฅผ ์ธ ์ ์๋๋ก ํ๋ write ๋ฒํผ์ด ๋ ์ ์๊ฒ ์ฃ .
๊ทธ๋ฐ๋ฐ, ์์ธํ ๋ณด๋ฉด review-list component์ ๋ด์ฉ์ ๊ฐ๊ฐ ํ๊ฐ์ ๋ฆฌ๋ทฐ๋ค์ ๋ฐ๋ณต์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์์ ์ ์ ์์ต๋๋ค. ๊ฐ๊ฐ์ ๋ฆฌ๋ทฐ๋ฅผ review-item component๋ผ ์นญํ๋ฉด, ๊ฒฐ๊ตญ review-list component๋ ๋ฐ๋ณต๋ review-item component ๋ค๊ณผ write ๋ฒํผ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค์.
(review-item component๋ ํ ๊ฐ๋ฅผ ๋ง๋ค์ด ๋ ํ์ ์ฐ๋ฆฌ๊ฐ ๊ฐ๊ณ ์๋ ๋ฆฌ๋ทฐ์ ๊ฐฏ์๋งํผ ๋ฐ๋ณตํด์ ์์ฑํ ์ ์์ต๋๋ค. 1000๊ฐ์ ๋ฆฌ๋ทฐ๊ฐ ์๋ค๋ฉด review-item component๋ฅผ 1000๊ฐ ๋ง๋๋ ๊ฒ์ด ์๋ ํ ๊ฐ๋ฅผ ๋ง๋ค์ด์ 1000๋ฒ ๋ฐ๋ณตํด์ ๋ณด์ฌ์ฃผ๊ธฐ๋ง ํ๋ ๊ฒ์ด์ฃ .)
๊ทธ๋ผ ์ด์ฏค์์ ํ๋ฒ ์ ๋ฆฌ๋ฅผ ํด ๋ณผ๊น์? ์ง๊ธ๊น์ง ๋์จ ๋ฆฌ๋ทฐ์ ๊ด๋ จ๋ ํ๋ฉด์
-review component
-review-list component
-review-item component
๋ก ์ ๋ฆฌํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ ์ฌ์ฉ์๊ฐ ๋ฉ์ธ ํ์ด์ง์์ reviews ๋ผ๋ ๋ฒํผ์ ํด๋ฆญํ์ ๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ์ฌ๋ฌ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ๋ฉด์ ๋ง๋ค๊ธฐ ์ํด ์์ด์ผ ํ๋ component ๋ค์ ๋๋ค. ๊ทธ๋ผ ๋จ์ํ ๋ค๋ฅธ์ฌ๋์ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ๋ฉด ์ด์ธ์ ์ฌ์ฉ์๊ฐ ์๋ก์ด ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ ๋๋ ์ด๋จ๊น์?
[์ํด ~ ์๋ก์ด ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๊ณ ์ถ๋ค๋ฉด, ์๋ก์ด ํ์ด์ง๋ฅผ ๋ด๋๊ฑฐ๋ผ]
reviews ๋ฒํผ์ ํด๋ฆญํ๊ณ review-list component๊ฐ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง์์ ์ฌ๋ฌ ๋ฆฌ๋ทฐ๋ค์ ๋ณด๋ ์ฌ์ฉ์๋ ๊ฐ์์ค๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๊ณ ์ถ์ด์ง๋๋ค. ๊ทธ๋ผ ์๋จ์ ์๋ write ๋ฒํผ์ ํด๋ฆญํ๊ฒ ๋๊ฒ ์ฃ . write ๋ฒํผ์ ํด๋ฆญํ๋ ๊ทธ ์๊ฐ, ์๋ก์ด ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๊ธฐ ์ํด ํ์ํ ์ ๋ณด๋ค์ ์
๋ ฅ๋ฐ์ ์ ์๋ review-new component ๊ฐ ์๋กญ๊ฒ ๋ ๋๋ง ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ์ ๊น, review-new component ๋ํ review์ ๊ด๋ จ๋ ํ๋ฉด์ด๊ธฐ ๋๋ฌธ์๊ธฐ์กด์ ์ปค๋ค๋ ํ๋ฉด ์ ์ฒด๋ฅผ ๊ฐ์ธ๊ณ ์๋ review component์์์ ๋ํ๋๊ฒ ๋ฉ๋๋ค. ์ฝ๊ฒ ๋งํ๋ฉด ์ปค๋ค๋ review component ์์ review-list component๊ฐ ๋ณด์ฌ์ง๊ณ ์๋ ์ํฉ์์ write๋ฒํผ์ ํด๋ฆญํ๋ ์๊ฐ review-list component๊ฐ ์๋ ์๋ฆฌ๋ฅผ review-new component๊ฐ ๋์ ํ๋ ๊ฒ์ด์ฃ . ๊ทธ๋ผ ์ด์ ์๋กญ๊ฒ ๋ฑ์ฅํ review-new component๋ฅผ ๋ฏ์ด๋ณผ๊น์.
์๋ฌด๋๋ ์๋ก์ด ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๋ ํ๋ฉด์ด๋ค ๋ณด๋, ์
๋ ฅ ํผ๋ค์ ํฅ์ฐ์ด ํผ์ณ์ง๋๋ค.
์ด๋ฆ, ๋์ด, ์ด๋ฉ์ผ , ์ฌ๋ ๊ณณ ๋ฑ๋ฑ ์ฌ์ฉ์๊ฐ ์๋ก์ด ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๋ ๋ฐ ํ์ํ ๊ธฐ์ด ์ ๋ณด๋ค๊ณผ ๋ฆฌ๋ทฐ์ ๋ด์ฉ์ ์
๋ ฅ๋ฐ๋ ๋ถ๋ถ์ ๊ทธ๋ ค์ฃผ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ณ๋ค๋ฅด๊ฒ ๋ฐ๋ณต๋๋ ๊ฒ๋ค์ด ์์ด ๋ณด์ด๋ ๊ฒ์ ๊ธฐ๋ถ ํ์ผ๊น์.. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ review-new component์์๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ฐ์ง component๋ค์ ๋ ์ด์ ์ถ๊ฐํ์ง ์๊ธฐ๋ก ํฉ๋๋ค. ๊ทธ๋ผ, ๋ค์ ์ ๋ฆฌ๋ฅผ ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ง๊ธ๊น์ง ๋์จ ๋ฆฌ๋ทฐ์ ๊ด๋ จ๋ ๋ชจ๋ ํ๋ฉด์
-review component
-review-list component
-review-item component
-review-new component
๋ก ์ด 4๊ฐ๊ฐ ๋์ต๋๋ค.
[ํ๋ฉด์ ๋ค์ด๊ฐ ์๋ ๋ฐ์ดํฐ๋ ์๋ ๊ทธ ๊ณณ์ ์๋ ๊ฒ์ผ๊น?]
์์๊น์ง ๋ฆฌ๋ทฐ์ ๊ด๋ จ๋ ํ๋ฉด๋ค์ ์ ์ํด ๋ดค์ต๋๋ค. ์ด ํ๋ฉด ๋ค์์ ๋ณด์ฌ์ค์ผ ํ๋ ๋ฐ์ดํฐ๋ค์ ์ด๋ป๊ฒ ๋ฐ์ ์ค๋ ๊ฒ ์ผ๊น์? ๋ํ, ์ฌ์ฉ์๊ฐ ์ ์ฑ์ค๋ ์์ฑํ ๋ฆฌ๋ทฐ๋ฅผ ์ ์ฅํ๋ ๋ถ๋ถ๋ ์์ด์ผ ํ์ง ์์๊น.. ํ๋ ์๊ฐ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
์ฐ๋ฆฌ ์ง๊ธ๊น์ง ๋งํ ํ๋ฉด๋ค์์ ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ ์ํด ์๋ฒ์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด๋ฉด ๊ฐ๋จํ๊ฒ ์๊ฐํด๋ ์ต์ 2๋ฒ์ ์ ๊ทผ์ด ํ์ํฉ๋๋ค.
๋งจ ์ฒ์ ์ฌ๋ฌ ์ฌ์ฉ์๋ค์ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ review-list component์์ ์์ฒญ๋๊ฒ ๋ง์ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ๋ค์ ๋ฐ์์ค๋ Fetch ๋ถ๋ถ , ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๊ฐ ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๊ณ submit๋ฒํผ์ ๋๋ ์ ๋ ์ฌ์ฉ์๊ฐ ์์ฑํ ๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅํ๊ธฐ ์ํ Add๋ถ๋ถ์
๋๋ค. (๋ ๋ง์ ์ ๊ทผ์ด ํ์ํ์ง๋ง, ๋ณต์กํจ์ ์ต์ํ ํ๊ธฐ ์ํด ๋๊ฐ์ง ๊ฒฝ์ฐ๋ง ์๊ฐํ๊ฒ ์ต๋๋ค.)
๋ฒ์จ ๋ฆฌ๋ทฐ์ ๊ด๋ จ๋ component๋ง 5๊ฐ์ธ๋ฐ, ์ฐ๋ฆฌ๊ฐ ์ ๊ณตํ๊ณ ์ ํ๋ ์นํ์ด์ง์ ๋ชจ๋ ํ๋ฉด๊ณผ ๊ธฐ๋ฅ์ ๋ง๋ค๋ฉด ๋์ฑ ๋ง์ component๋ค์ด ์๊ธฐ๊ฒ ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ ๊ฒ ๋ง์ component๋ค์ด ์๊ฒผ์ ๋ ๋ฆฌ๋ทฐ๋ฐ์ดํฐ ๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ค์ด ๋ฌธ์ ์์ด ํจ์จ์ ์ผ๋ก ์ ๋์๊ฐ๊ฒ ํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ store๋ผ๋ ์ ์ฅ์๋ฅผ ํ๋ ์์ฑํ ํ ์์ ๋งํ๋ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ Fetch๋ถ๋ถ๊ณผ Add๋ถ๋ถ์ store๋ฅผ ํตํด ๋์ํ๊ฒ ํฉ๋๋ค. (์ผ๋ถ์ ์ผ์์๋ ngrx๋ฅผ ์ฌ์ฉํฉ๋๋ค.)
์์ผ๋ก๋ ๋ฐ์ดํฐ์ ๊ด๋ จํ ๋์๋ค์ ๋ชจ๋ store๋ผ๋ ์ ์ฅ์๋ฅผ ํตํด์ ํํด์ง๋ฉฐ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ์ ๊ดํ ๋์ ๋ํ store๋ผ๋ ์ ์ฅ์๋ฅผ ๊ฑฐ์ณ ์์ง์ด๊ฒ ๋ ๊ฒ์
๋๋ค.
ํ์ง๋ง ์ด store๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ผญ ๋ฐ๋ผ์ผ ํ๋ ํ๋ก์ธ์ค๊ฐ ์์ต๋๋ค. ์ด ํ๋ก์ธ์ค์ ํ์ํ action, reducer, effect 3๊ฐ์ง ํ์ผ์ ์ถ๊ฐ๋ก ์์ฑํด ๋ฆฌ๋ทฐ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์ด์ฏค์์ ๋ฆฌ๋ทฐ์ ๊ดํ ํ๋ฉด๊ณผ ๊ธฐ๋ฅ์ ์ ๋ฆฌํด ๋ณด๋ฉด,
-review component
-review-list component
-review-item component
-review-new component
-review-actions
-review-effects
-review-reducers
์ฐ์.. ๋ฆฌ๋ทฐ์ ๊ดํด ์ ๊ฒฝ์จ์ผ ํ ๊ฒ์ด ์ด๋์ 7๊ฐ๊ฐ ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ review-actions, review-effects, review-reducers ์ด 3๊ฐ์ ํ์ผ์ ๋ฆฌ๋ทฐ์ ๊ดํ ๊ฒ์ด๋ผ๋ฉด,
์๋ก์ด ๋ฆฌ๋ทฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋, ๊ธฐ์กด์ ์๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ถ๋ฌ์ค๋ ํ๋ ์ด์ธ์๋ ํ์ํ ํ๋์ด ์์ ๋๋ง๋ค ํด๋น ํ๋๋ค์ ์ถ๊ฐํ์ฌ ๊ด์ฅํ๊ฒ ๋ฉ๋๋ค.
๋๋ฌธ์ fetch์ add ์ด์ธ์๋ ์ข ๋ ๋ง์ ํจ์๋ค์ด ์ถ๊ฐ๋ ์ ์๊ฒ ์ฃ .
[๋ฒ์ธ, ๋ฆฌ๋ทฐ์ ํ์ํ ๊ทธ ๋ฐ์ ์ด์ผ๊ธฐ๋ค..]
์ง๊ธ๊น์ง ๋งํ ์ผ๋ จ์ ํ๋ ์ด์ธ์๋
๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๋ ค๊ณ write๋ฒํผ์ ๋๋ ์ ๋ ํ์๊ฐ์
์ด ๋์ด ์๋์ง ์๋์ง,
ํ์๊ฐ์
์ด ๋์ด ์๋ค๋ฉด ์ฐ๋ฆฌ ์ ํ์ ์ฃผ๋ฌธํ ๊ธฐ๋ก์ด ์๋์ง
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฃผ๋ฌธ๊ฑด์ ๋ํ์ฌ ๋ฆฌ๋ทฐ๋ฅผ ์ด๋ฏธ ์์ฑํ ์ ์ด ์๋์ง์ ๋ํ ๋ฑ์ validation ์์
๋ค๊ณผ ๊ทธ์ ๋ฐ๋ผ ์๋ฒ์์๋ ์ผ์ด๋๋ ์๋ง์ ํ๋๋ค..
์ง๋ฉด๊ด๊ณ์ ๋ฏธ์ฒ ๋ค ์ค๋ช
ํ์ง ๋ชปํ ์ฌ๋ฌ ํ๋๋ค์ด ์นํ์ด์ง ๋ค์์ ์ด์ฌํ ๋์ฌ๋์ฌ ์ผ์ด๋๊ณ ๋ง๋ฌผ๋ฆฌ๋ฉฐ ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ์จ์ ํ ์ ๊ณตํ๊ฒ ๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์นํ์ด์ง์ ์ ์ํ ์๊ฐ ๋ถํฐ ์นํ์ด์ง๋ ๋ง์น ์ฌ์ฅ์ฒ๋ผ ๋ฉ์ถค ์์ด ์์ฒญ์ ํ๊ณ ์๋ต์ ๋ฐ์ผ๋ฉฐ ๋๊ตฌ๋ณด๋ค ์ด์ฌํ ๋์๊ฐ๊ฒ ๋ฉ๋๋ค.
๋ถ์กฑํ์ง๋ง ์ด ๊ธ์ ํตํด component๋ฅผ ์ชผ๊ฐ๊ณ ์กฐํฉํ๋ ๊ณผ์ ์ด ๋ง์น ๋ ๊ณ ๋ฅผ ์กฐ๋ฆฝํ๋ ๊ฒ์ฒ๋ผ ์กฐ๊ธ์ด๋ผ๋ ๋ ์ฝ๊ฒ ์๋ฟ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.