์ฐธ๊ณ ์ฌ์ดํธ
โข ์นด์นด์ค - FE ๊ธฐ์ ๋ธ๋ก๊ทธ / ์ปดํฌ๋ํธ ์ถ์ํ
โข velog - jinoo.io / ์ปดํฌ๋ํธ๋ฅผ ๋ ๊ณ ์ฒ๋ผ ์์๋ณด์!

*์ถ์ํ: ์ฌ๋ฌ ๊ฐ์ง ์ฌ๋ฌผ์ด๋ ๊ฐ๋ ์์ ๊ณตํต๋๋ ํน์ฑ์ด๋ ์์ฑ ๋ฐ์๋ฅผ ์ถ์ถํ์ฌ ํ์ ํ๋ ์์ฉ
๐ ์ปดํฌ๋ํธ์ ์ถ์ํ
ํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ(ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๊ฒ ๋๋ค.
์ปดํฌ๋ํธ ๋จ์์ ๊ฐ๋ฐ๋ก ์ฅ์ ์ ๋ฌด์์ผ๊น?
๐๐ป ์ฅ์
1. ์ฌ์ฌ์ฉ์ฑ: ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ๋ธ๋ก์ผ๋ก, ์ฌ๋ฌ ๊ณณ์์ ๋์ผํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ค.
2. ์ ์ง๋ณด์ ์ฉ์ด์ฑ: ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ํน์ ๊ธฐ๋ฅ์ด๋ UI ์์๋ฅผ ์์ ํ ๋ ํด๋น ์ปดํฌ๋ํธ๋ง ์ ๋ฐ์ดํธํ๋ฉด ๋๋ค.
์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ๋ฒ๊ธ๋ฅด ์์ ํ๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ํจ์จ์ ์ด๋ค.
3. ํ ์คํธ ์ฉ์ด์ฑ: ๋ ๋ฆฝ์ ์ธ ๋จ์๋ก ํ ์คํธํ ์ ์์ด, ๊ฐ ์ปดํฌ๋ํธ์ ๊ธฐ๋ฅ์ ๊ฐ๋ณ์ ์ผ๋ก ๊ฒ์ฆํ ์ ์๋ค.
4. ํ์ ํจ์จ์ฑ: ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐํ ์ ์์ด, ํ ๋จ์๋ก ์์ ํ ๋ ํจ์จ์ ์ด๋ค.
๊ฐ ๊ฐ๋ฐ์๋ ์์ ์ด ๋งก์ ์ปดํฌ๋ํธ์ ์ง์คํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ปดํฌ๋ํธ์์ ์ถฉ๋์ ์ต์ํํ ์ ์๋ค.
5. ์ฑ๋ฅ ์ต์ ํ: ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ ํ์ํ ๋ถ๋ถ๋ง ๋ ๋๋ง ํ ์ ์์ด, ์ฑ๋ฅ ์ต์ ํ์ ์ ๋ฆฌํ๋ค.
๐งฉ ์ปดํฌ๋ํธ๋?
ํ๋ก ํธ์๋์์ ์ปดํฌ๋ํธ๋ ์ฌ์ฉ์์์ ์ธํฐ๋ ์ ์ ํตํด ํ์ํ ๋น์ฆ๋์ค ๋ก์ง์ ์คํํ๊ฑฐ๋ ์คํ์ผ, ์ ๋๋ฉ์ด์ ๊ณผ ๊ฐ์ ์๊ฐ์ ์ธ ๋ถ๋ถ์ ํํํ๋ UI(User Interface)๋ฅผ ์ ์ ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.

๋ค์๊ณผ ๊ฐ์ ๋ชจ์์ Input ๊ด๋ จ ์ปดํฌ๋ํธ๊ฐ ์๊ณ , ์ฌ๋ฌ ๊ณณ์์ ์ปดํฌ๋ํธ๋ฅผ ํธ์ถํ๋ค ํ์ ๋, ๊ฐ Input์ ์ฌ๋ฌ ์ญํ ์ ํ ๊ฒ์ด๋ค.
์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋ก ๋ค๋ฉด, ์ด๋ ํ ์ธํ์ ์์ด๋์ ๊ฐ์ ๋ฐ๋, ๋ค๋ฅธ ์ธํ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๋...
์ด๋๋ง๋ค <input/> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํ๊ทธ๋ง๋ค์ className์ ์ง์ ํ ํ์์์ด ํ ์ปดํฌ๋ํธ ์ ์์์ ์ ์ํด๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์๊ฐํด๋ณด์.
์ด๋ป๊ฒ ๋๋์ด์ผํ ๊น?
๋์์ธ์ ๊ณตํต๋์ด ์์ผ๋ฉฐ, ๊ธฐ๋ฅ์ ๊ฐ๊ธฐ ๋ค๋ฅด๊ฒํ๋ ํธ์ถ ์์ ๋์์ธ ๋ฐ ๊ธฐ๋ฅ ๋ํ ์์ ์ ๊ฐ๋ฅํ๋๋ก.
(์ปดํฌ๋ํธ ์ ์ํ๋ ๊ณณ์์ ๊ธฐ๋ฅ์ ์ง์ ํ์ง์๊ณ ํธ์ถํ๋ ๊ณณ์์ ๊ธฐ๋ฅ์ ์ ํด์ฃผ์.)
์ด์ฒ๋ผ ์ ์ถ๋ ฅ์ ๋ด๋นํ๋ ์์ ์ปดํฌ๋ํธ๋ก๋ถํฐ ๋ค์ํ ์์๋ค์ ์ ์ ํ ๋จ์๋ก ๋๋๊ณ ์ถ์ํํด์ผํ๋ค.
๐ญ ์ถ์ํ ์์น
โข SOLID ์์น์ ์ฒซ ๋ฒ์งธ,
SPR (Single Responsibility Principle) - ๋จ์ผ ์ฑ ์ ์์น
์ฆ, ํด๋์ค(๊ฐ์ฒด)๋ ๋จ ํ ๊ฐ์ ์ฑ ์(๊ธฐ๋ฅ)์ ๊ฐ์ ธ์ผ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์์ง๋ค.
โข ๋์ ์์ง๋์ ๋ฎ์ ๊ฒฐํฉ๋ (High Cohesion, Low Coupling)
์ปดํฌ๋ํธ ๋ด๋ถ ๋ก์ง์ ๊ธด๋ฐํ๊ฒ ์์ฑ๋์ด์ผํ์ง๋ง, ๋ค๋ฅธ ์ปดํฌ๋ํธ์๋ ๋์จํ๊ฒ ๊ฒฐํฉ๋์ด์ผํ๋ค.
๋ด๋ถ ๋ก์ง์ด ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์ฑ๋์ด์ผ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ฉด, ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๊ฒฐํฉ๋์ด ์๋ค๋ฉด, ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ์์ ์, ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์ํฅ์ ๋ฏธ์น ์ ์์ด ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๋ค.
โข ๋ช ํํ ์ธํฐํ์ด์ค ์ ์
์ปดํฌ๋ํธ ๊ฐ์ ์ํธ์์ฉ์ ๋ช ํํ๊ฒ ์ ์๋์ด์ผ ํ๋ค.
์ฆ, ์ด๋ค ์ปดํฌ๋ํธ๊ฐ ์ด๋ ํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋์ง ์ฝ๊ฒ ์ ์ ์์ด์ผํ๋ค.
๋ง์ฝ, ๋ฐ์ดํฐ ํ๋ฆ์ด ๋ช ํํ์ง ์๋ค๋ฉด, ์ปดํฌ๋ํธ๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ต๊ณ , ๊ฐ๋ ์ฑ์ด ๋จ์ด์ ธ ๋ถํธํจ์ด ๋ฐ์ํ๋ค.
๐ช ์ถ์ํ ๋จ๊ณ
1. ์ค๋ณต ์ฝ๋ ์๋ณ
๊ธฐ์กด ์ฝ๋ ๋ฐ ๊ฐ๋ฐ ํ ์ฝ๋์์ ์ค๋ณต๋ ์ฝ๋๋ฅผ ์๋ณํ์ฌ ์ค๊ณํฉ๋๋ค.
2. ๊ณตํต ํจํด ์ถ์ถ
์ค๋ณต๋ ์ฝ๋์ ๋ฐ๋์ ๊ณตํต๋ ํจํด์ด ์์ ๊ฒ์ด๋ค. ์ด ๊ณตํต๋ ๋ถ๋ถ์ ์ถ์ถํ์ฌ ์ปดํฌ๋ํธํํ๋ค.
๋ง์ฝ, ํ๋์ฝ๋ฑ ๋์ด์๋ค๋ฉด, ์ํ ๊ด๋ฆฌ๋ฅผ ํตํด ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋๋ก ์ฝ๋๋ฅผ ์์ ํ๋ค.
3. ์ปดํฌ๋ํธ ๋ถ๋ฆฌ ๋ฐ ์ฌ๊ตฌ์ฑ
๊ณตํต๋ ํจํด์ ์ถ์ถํ ํ, ์ปดํฌ๋ํธ๋ฅผ ์ ์ ํ๊ฒ ๋ถ๋ฆฌํ๊ณ , ๊ตฌ์กฐ์ ๋ง๊ฒ ์ฌ๊ตฌ์ฑํ๋ค. ์ด๋ ๊ฒํ๋ฉด ์ฝ๋๊ฐ ๋ ํจ์จ์ ์ด๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ๊ตฌ์กฐ๊ฐ ๋๋ค.
'Library > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฐธ๊ณ ์ฌ์ดํธ
โข ์นด์นด์ค - FE ๊ธฐ์ ๋ธ๋ก๊ทธ / ์ปดํฌ๋ํธ ์ถ์ํ
โข velog - jinoo.io / ์ปดํฌ๋ํธ๋ฅผ ๋ ๊ณ ์ฒ๋ผ ์์๋ณด์!

*์ถ์ํ: ์ฌ๋ฌ ๊ฐ์ง ์ฌ๋ฌผ์ด๋ ๊ฐ๋ ์์ ๊ณตํต๋๋ ํน์ฑ์ด๋ ์์ฑ ๋ฐ์๋ฅผ ์ถ์ถํ์ฌ ํ์ ํ๋ ์์ฉ
๐ ์ปดํฌ๋ํธ์ ์ถ์ํ
ํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ(ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๊ฒ ๋๋ค.
์ปดํฌ๋ํธ ๋จ์์ ๊ฐ๋ฐ๋ก ์ฅ์ ์ ๋ฌด์์ผ๊น?
๐๐ป ์ฅ์
1. ์ฌ์ฌ์ฉ์ฑ: ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ๋ธ๋ก์ผ๋ก, ์ฌ๋ฌ ๊ณณ์์ ๋์ผํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ ์ฝ๋์ ์ค๋ณต์ ์ค์ด๊ณ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ค.
2. ์ ์ง๋ณด์ ์ฉ์ด์ฑ: ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ํน์ ๊ธฐ๋ฅ์ด๋ UI ์์๋ฅผ ์์ ํ ๋ ํด๋น ์ปดํฌ๋ํธ๋ง ์ ๋ฐ์ดํธํ๋ฉด ๋๋ค.
์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ๋ฒ๊ธ๋ฅด ์์ ํ๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ํจ์จ์ ์ด๋ค.
3. ํ ์คํธ ์ฉ์ด์ฑ: ๋ ๋ฆฝ์ ์ธ ๋จ์๋ก ํ ์คํธํ ์ ์์ด, ๊ฐ ์ปดํฌ๋ํธ์ ๊ธฐ๋ฅ์ ๊ฐ๋ณ์ ์ผ๋ก ๊ฒ์ฆํ ์ ์๋ค.
4. ํ์ ํจ์จ์ฑ: ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐํ ์ ์์ด, ํ ๋จ์๋ก ์์ ํ ๋ ํจ์จ์ ์ด๋ค.
๊ฐ ๊ฐ๋ฐ์๋ ์์ ์ด ๋งก์ ์ปดํฌ๋ํธ์ ์ง์คํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ปดํฌ๋ํธ์์ ์ถฉ๋์ ์ต์ํํ ์ ์๋ค.
5. ์ฑ๋ฅ ์ต์ ํ: ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ ํ์ํ ๋ถ๋ถ๋ง ๋ ๋๋ง ํ ์ ์์ด, ์ฑ๋ฅ ์ต์ ํ์ ์ ๋ฆฌํ๋ค.
๐งฉ ์ปดํฌ๋ํธ๋?
ํ๋ก ํธ์๋์์ ์ปดํฌ๋ํธ๋ ์ฌ์ฉ์์์ ์ธํฐ๋ ์ ์ ํตํด ํ์ํ ๋น์ฆ๋์ค ๋ก์ง์ ์คํํ๊ฑฐ๋ ์คํ์ผ, ์ ๋๋ฉ์ด์ ๊ณผ ๊ฐ์ ์๊ฐ์ ์ธ ๋ถ๋ถ์ ํํํ๋ UI(User Interface)๋ฅผ ์ ์ ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.

๋ค์๊ณผ ๊ฐ์ ๋ชจ์์ Input ๊ด๋ จ ์ปดํฌ๋ํธ๊ฐ ์๊ณ , ์ฌ๋ฌ ๊ณณ์์ ์ปดํฌ๋ํธ๋ฅผ ํธ์ถํ๋ค ํ์ ๋, ๊ฐ Input์ ์ฌ๋ฌ ์ญํ ์ ํ ๊ฒ์ด๋ค.
์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋ก ๋ค๋ฉด, ์ด๋ ํ ์ธํ์ ์์ด๋์ ๊ฐ์ ๋ฐ๋, ๋ค๋ฅธ ์ธํ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๋...
์ด๋๋ง๋ค <input/> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํ๊ทธ๋ง๋ค์ className์ ์ง์ ํ ํ์์์ด ํ ์ปดํฌ๋ํธ ์ ์์์ ์ ์ํด๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์๊ฐํด๋ณด์.
์ด๋ป๊ฒ ๋๋์ด์ผํ ๊น?
๋์์ธ์ ๊ณตํต๋์ด ์์ผ๋ฉฐ, ๊ธฐ๋ฅ์ ๊ฐ๊ธฐ ๋ค๋ฅด๊ฒํ๋ ํธ์ถ ์์ ๋์์ธ ๋ฐ ๊ธฐ๋ฅ ๋ํ ์์ ์ ๊ฐ๋ฅํ๋๋ก.
(์ปดํฌ๋ํธ ์ ์ํ๋ ๊ณณ์์ ๊ธฐ๋ฅ์ ์ง์ ํ์ง์๊ณ ํธ์ถํ๋ ๊ณณ์์ ๊ธฐ๋ฅ์ ์ ํด์ฃผ์.)
์ด์ฒ๋ผ ์ ์ถ๋ ฅ์ ๋ด๋นํ๋ ์์ ์ปดํฌ๋ํธ๋ก๋ถํฐ ๋ค์ํ ์์๋ค์ ์ ์ ํ ๋จ์๋ก ๋๋๊ณ ์ถ์ํํด์ผํ๋ค.
๐ญ ์ถ์ํ ์์น
โข SOLID ์์น์ ์ฒซ ๋ฒ์งธ,
SPR (Single Responsibility Principle) - ๋จ์ผ ์ฑ ์ ์์น
์ฆ, ํด๋์ค(๊ฐ์ฒด)๋ ๋จ ํ ๊ฐ์ ์ฑ ์(๊ธฐ๋ฅ)์ ๊ฐ์ ธ์ผ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋์์ง๋ค.
โข ๋์ ์์ง๋์ ๋ฎ์ ๊ฒฐํฉ๋ (High Cohesion, Low Coupling)
์ปดํฌ๋ํธ ๋ด๋ถ ๋ก์ง์ ๊ธด๋ฐํ๊ฒ ์์ฑ๋์ด์ผํ์ง๋ง, ๋ค๋ฅธ ์ปดํฌ๋ํธ์๋ ๋์จํ๊ฒ ๊ฒฐํฉ๋์ด์ผํ๋ค.
๋ด๋ถ ๋ก์ง์ด ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์ฑ๋์ด์ผ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ฉด, ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๊ฒฐํฉ๋์ด ์๋ค๋ฉด, ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ์์ ์, ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์ํฅ์ ๋ฏธ์น ์ ์์ด ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๋ค.
โข ๋ช ํํ ์ธํฐํ์ด์ค ์ ์
์ปดํฌ๋ํธ ๊ฐ์ ์ํธ์์ฉ์ ๋ช ํํ๊ฒ ์ ์๋์ด์ผ ํ๋ค.
์ฆ, ์ด๋ค ์ปดํฌ๋ํธ๊ฐ ์ด๋ ํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋์ง ์ฝ๊ฒ ์ ์ ์์ด์ผํ๋ค.
๋ง์ฝ, ๋ฐ์ดํฐ ํ๋ฆ์ด ๋ช ํํ์ง ์๋ค๋ฉด, ์ปดํฌ๋ํธ๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ต๊ณ , ๊ฐ๋ ์ฑ์ด ๋จ์ด์ ธ ๋ถํธํจ์ด ๋ฐ์ํ๋ค.
๐ช ์ถ์ํ ๋จ๊ณ
1. ์ค๋ณต ์ฝ๋ ์๋ณ
๊ธฐ์กด ์ฝ๋ ๋ฐ ๊ฐ๋ฐ ํ ์ฝ๋์์ ์ค๋ณต๋ ์ฝ๋๋ฅผ ์๋ณํ์ฌ ์ค๊ณํฉ๋๋ค.
2. ๊ณตํต ํจํด ์ถ์ถ
์ค๋ณต๋ ์ฝ๋์ ๋ฐ๋์ ๊ณตํต๋ ํจํด์ด ์์ ๊ฒ์ด๋ค. ์ด ๊ณตํต๋ ๋ถ๋ถ์ ์ถ์ถํ์ฌ ์ปดํฌ๋ํธํํ๋ค.
๋ง์ฝ, ํ๋์ฝ๋ฑ ๋์ด์๋ค๋ฉด, ์ํ ๊ด๋ฆฌ๋ฅผ ํตํด ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋๋ก ์ฝ๋๋ฅผ ์์ ํ๋ค.
3. ์ปดํฌ๋ํธ ๋ถ๋ฆฌ ๋ฐ ์ฌ๊ตฌ์ฑ
๊ณตํต๋ ํจํด์ ์ถ์ถํ ํ, ์ปดํฌ๋ํธ๋ฅผ ์ ์ ํ๊ฒ ๋ถ๋ฆฌํ๊ณ , ๊ตฌ์กฐ์ ๋ง๊ฒ ์ฌ๊ตฌ์ฑํ๋ค. ์ด๋ ๊ฒํ๋ฉด ์ฝ๋๊ฐ ๋ ํจ์จ์ ์ด๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ๊ตฌ์กฐ๊ฐ ๋๋ค.