ContainerยทPresentational Pattern
React ๊ธฐ์ค์ผ๋ก ์ค๋ช ํฉ๋๋ค.
์ฉ์ด
๊ด์ฌ์ฌ ๋ถ๋ฆฌ(separation of concerns, SoC): ํ๋ก๊ทธ๋จ์ ํ๋์ ๋จ์ผ ๋ธ๋ก์ผ๋ก ์์ฑํ์ง ์๊ณ ์์ ์กฐ๊ฐ์ผ๋ก ๋๋์ด ๊ฐ๊ฐ ๋จ์ํ ๊ฐ๋ณ ์์ ์ ์๋ฃํ๋๋ก ๋ง๋๋ ์์ . SOLID ์์น ์ค 2๊ฐ๊ฐ ์ด ๊ฐ๋ ์์ ํ์๋์๋ค.(๋จ์ผ ์ฑ ์, ์ธํฐํ์ด์ค ๋ถ๋ฆฌ)
์๋ฏธ
Hook์ด ์กด์ฌํ๊ธฐ ์ , ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ปค์ก์ ๋ ์ปดํฌ๋ํธ ๊ฐ์ ์์กด๋๊ฐ ๋์์ ธ ์ฌ์ฌ์ฉ์ด ์ด๋ ค์ ๊ณ , ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ก์ง๊ณผ View ๋ ์ด์ด๋ฅผ ๋๋ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ํ ํจํด์ด๋ค.
Container/Presentation ์ปดํฌ๋ํธ
Container ์ปดํฌ๋ํธ
๋์ํ๋ ๋ถ๋ถ์ ๋ด๋นํ๋ค.
๋ด๋ถ์ presentational ์ปดํฌ๋ํธ์ container ์ปดํฌ๋ํธ๋ฅผ ๋ชจ๋ ํฌํจํ ์ ์์ง๋ง, ์ผ๋ถ ๋ํ์ฉ div๋ฅผ ์ ์ธํ๊ณ ๋ ์์ฒด์ ์ธ DOM ๋งํฌ์ ๊ณผ ์คํ์ผ์ด ์๋ค.
presentational ์ปดํฌ๋ํธ ๋๋ ๋ค๋ฅธ container ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ์ ๋์์ ์ ๊ณตํ๋ค.
Presentational ์ปดํฌ๋ํธ
๋ณด์ฌ์ง๋ ๋ถ๋ถ์ ๋ด๋นํ๋ค.
๋ด๋ถ์ presentational ์ปดํฌ๋ํธ์ container ์ปดํฌ๋ํธ๋ฅผ ๋ชจ๋ ํฌํจํ ์ ์์ผ๋ฉฐ, ๋ณดํต ์์ฒด์ ์ธ DOM ๋งํฌ์ ๊ณผ ์คํ์ผ์ด ์๋ค.
store ๋ฑ์ ์ฑ์ ๋๋จธ์ง ๋ถ๋ถ์ ๋ํ ์ข ์์ฑ์ด ์๋ค.
๋ฐ์ดํฐ ๋ก๋ ๋๋ ๋ฎคํ ์ด์ ์ฝ๋๊ฐ ์๋ค.
props๋ฅผ ํตํด์๋ง ๋ฐ์ดํฐ์ ์ฝ๋ฐฑ์ ์์ ํ๋ค.
์์ฒด ์ํ๋ฅผ ๊ฑฐ์ ๊ฐ์ง ์๋๋ค.(์๋๋ผ๋ ๋ฐ์ดํฐ๊ฐ ์๋ UI ์ํ)
์ฅ์
์ปดํฌ๋ํธ๋ก๋ถํฐ ๋ณต์กํ๊ณ statefulํ ๋ก์ง์ ๋ถ๋ฆฌํ๊ฒ ํด์ฃผ์ด, ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ์ธก๋ฉด์์ ํจ๊ณผ์ ์ด๋ค.
Presentation ์ปดํฌ๋ํธ๋ ์ฑ์ ๋น์ฆ๋์ค ๋ก์ง์ ์์ ํ์ง ์์ผ๋ฏ๋ก, ๋ค์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฌ์ฉํ ์ ์๋ค. ๋ํ ์๊ตฌ๋๋ ๋ฐ์ดํฐ๋ฅผ props์ ๋๊ฒจ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ฏ๋ก Storybook ํ ์คํธ ๋ฑ์์ ์ด์ ์ ๊ฐ๋๋ค.
๋จ์
Container/Presentational ํจํด์ ์ฒ์ ์๊ฐํ Dan Abramov๋ ํ ์์ ์์ ์ด ํจํด์ ์ฌ์ฉํ์ง ๋ง๋ผ๊ณ ์ธ๊ธํ์๋ค. ์ด์ ๋, ์์๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌํ์ง ์์๋ Hook์ด ๋์ผํ ์ผ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฐธ๊ณ ์๋ฃ
Last updated