๊ธฐํ๋จ๊ณ์์๋ถํฐ ์ปดํฌ๋ํธ์ ์ฌ์ฌ์ฉ์ ์ผ๋์ ๋๊ณ ํ์ด์ง๋ค์ ๊พธ๋ฆฌ๊ณ ๋์์ธํ๋ค. ๋ชจ๋ ํ์ด์ง๋ค์ ๋ ์ด์์๊ณผ ์ปดํฌ๋ํธ๋ค์ด ์ผ๊ด์ฑ์ ์ ์งํ๋๊ฒ ์ ์ผ ์ค์ํ๋ค.
๊ธฐํํ ํ์ด์ง๋ค์ ์ผ๋ถ์ด๋ค. ์ ๋ชฉ๊ณผ ์ค๋ช , ์ธํ์ฐฝ, ๋ฒํผ ๋ฑ์ด ๋ชจ๋ ์ฌํ์ฉ๋ ์ ์๋ ์ปดํฌ๋ํธ๋ค์ด๋ค. ์ธ๋ถ์ ์ธ ๊ฒ๋ค (๊ธ์ ๋ด์ฉ, ์ธํ์ placeholder์ ์ค๋ฅธ์ชฝ์ ์๋ ์ธ๋์ผ์ดํฐ, ๋ฒํผ์ ๋ด์ฉ๊ณผ ์๊น, ๋๊ทธ๋ ํ ๋๋ฆฌ ์ ๋ฌด ๋ฑ๋ฑ) ๋ง ๋ฐ๊พธ๊ณ ๋ชจ๋ ์ฝ๋๋ฅผ ์ฌํ์ฉํ ๊ฒ์ ์ผ๋์ ๋๊ณ ๋์์ธํ๋ค.
๊ฐ๋ฐ๋ก ๋ค์ด๊ฐ๋ ค๋๊น ๋ง๋งํ ๊ตฌ์์ด ์์๋ค. ์ฒ์์ผ๋ก ํ๋ ํ์ ์ด์๊ณ ์ด๋ป๊ฒ ์์ ์ ๋๋์ด์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋ง์๋ค. ํ์ด์ง ๋จ์๋ก ๋๋๋ฉด ์ปดํฌ๋ํธ๋ค์ ์ฌ์ฌ์ฉ์ด ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์๋ค.
๊ทธ๋์ ๋์์ธ ์์คํ ์ด๋ผ๋ ๊ฒ์ด ์ฌ์ฉ๋๋ค. ๋์์ธ ์์คํ ์ ์คํ์ผ ๊ฐ์ด๋๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ํฌํจํ๋ค. ๊ตฌ๊ธ์ด๋ ์์ด๋น์๋น ๊ฐ์ ๊ธฐ์ ๋ค์ ๋ ์์ ์ธ ๋์์ธ ์์คํ ์ ๋ง๋ค์ด ์ฌ์ฉํ๊ณ ์๋ค. ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ Meterial Design์ด ๊ฐ์ฅ ๋ํ์ ์ธ ์์ด๋ค.
์ปดํฌ๋ํธ ๋จ์๋ก ๊ฐ๋ณ์ ์ผ๋ก ๋ง๋ค๊ณ , ์ด๋ฅผ ๋ฌธ์ํํด์ ๋ณด์ฌ์ค๋ค. ๋ง๋ค์ด์ง ์ปดํฌ๋ํธ๋ฅผ ๊ฐ ํ์ด์ง์์ ๋ถ๋ฌ์ ๋๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋์์ธ์ ๋ํ ์ผ๊ด์ฑ์ ์ ์งํ๋ฉฐ ๊ฐ๋ฐํ๊ธฐ๊ฐ ํจ ์์ํด์ง๋ค.
์ด๋ฅผ ๋์์ฃผ๋ ๋๊ตฌ๊ฐ ๋ฐ๋ก StoryBook์ด๋ค.
์ปดํฌ๋ํธ๋ช
.jsx
๋ก ๋ง๋ค์ด์ง ํ์ผ์ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ณ export ํด์ค๋ค. storybook์์๋ ์ปดํฌ๋ํธ๋ช
.stories.jsx
๋ฅผ ์ฐพ์์ ์ฝ๊ณ ์นํ์ด์ง์ ๋ณด๊ธฐ์ข๊ฒ ๋ฌธ์ํํด์ ๋์์ฃผ๋ ๊ฒ์ด๋ค.
๋ง๋ค์ด์ง ์ปดํฌ๋ํธ์ ์์ฒ๋ผ propTypes๋ฅผ ๋ฌ์์ค๋ค. ์ปดํฌ๋ํธ์ ๋ค์ด๊ฐ๋ prop๋ค์ type์ ์ฒดํฌํ ์ ์๋ค.
storybook์์ ํด๋น ๋ถ๋ถ์ ๋ณด๊ณ ์์ ๊ฐ์ด ๋ฌธ์๋ฅผ ๋ง๋ค์ด์ค๋ค. Control ํจ๋์์ ์ง์ ๊ฐ์ ์์ ํด๋ณด๋ฉด์ ์ปดํฌ๋ํธ์ ๋ชจ์ต์ด ์ด๋ป๊ฒ ๋ฐ๋๋์ง ํ์ธํ ์ ์๋ค. ๊ต์ฅํ ์ฌ๋ฐ๋ค. Proptypes ์์ ์ ์ ์ฃผ์์ด Description์ผ๋ก ๋ค์ด๊ฐ๋ค. ์ด์ฌํ ์ ์ด์ฃผ์.
GoFrontButton ์ปดํฌ๋ํธ ํ๋๊ฐ (ํ์ฌ ๊ธฐํ ์์์ ์ฌ์ฉ๋๋) ๋ชจ๋ ์งํ๋ฒํผ์ ์ฌ์ฉ๋ ์ ์๋ค. ๋ฒํผ์ ๋ด์ฉ๊ณผ ์๊น, ๋ฐฐ๊ฒฝ์ ์ ๋ฌด ๋ฑ์ ์ปดํฌ๋ํธ ์์ prop์ผ๋ก ์ ๋ฌํ ์ ์๋๋ก ํ๊ธฐ ๋๋ฌธ์ด๋ค.
.stories.jsx
์์ ์ปดํฌ๋ํธ ํ
ํ๋ฆฟ์ ๋ค์ํ ์์๋ฅผ ๋ง๋ค์ด์ฃผ์๋ค.
์ญ์ ๋ฌธ์๋ก ๋ณผ ์ ์๋ค. ํ๋ก ํธ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ๋ ์ฝ๋๋ฅผ ๋ณต์ฌํด์ ๊ฐ์ ธ์ค๊ธฐ๋ง ํ๋ฉด ๋๋ค.
์ปดํฌ๋ํธ๋ค์ ๋น๋ํ ํ์ npm ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ฐฐํฌ๋ฅผ ์์ผ์ฃผ์๋ค. antd๋ฅผ ์ฌ์ฉํ๋๊ฒ์ฒ๋ผ ์ฐ๋ฆฌ๋ง์ ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์์ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ์ด ๋ถ๋ถ์ด ์ ์ผ ๋ง์ ๋ค์๋ค.
๊ทธ ๊ณผ์ ์ ์ฌ ๊ธฐ ์ ๋ณผ ์ ์๋ค.
์๋ง ๋ ์ปค์ ์ด์ฐฌ์ง์ด ๋ ๋์.
InputForm ์ปดํฌ๋ํธ์ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ๋ฃ๋ค๋ณด๋๊น prop์ ๊ฐ์๊ฐ ๋๋ฌด ๋ง์์ ธ์ ์ ์ ์์๋ค. input form์ด ๋ค์ด๊ฐ๋ ๊ฐ๊ฐ์ ํ์ด์ง๋ง๋ค ๋ค์ด๊ฐ๋ prop ๊ฐ์ ๋ฌถ์ด์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ์ฌ์ฉํ๋ค. prop์ผ๋ก๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ํ์ด์ง์ ์ด๋ฆ ํ๋๋ง ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๊ธฐํ์ด ๋ฐ๋์ง๋ง ์๋๋ค๋ฉด ์ด ํธ์ด ์กฐ๊ธ ๋ ๊น๋ํ๊ฒ ๋ณด์ธ๋ค. ์ด๋๊น์ง๋ ๊ธฐํ์ด ๋ฐ๋์ง๋ง ์๋๋ค๋ฉด.
์ง์ ์ฌ์ฉํด๋ณด๋ฉฐ ๋๊ผ๋ ์ฅ์ ๋ค์ ๊ธฐ๋กํด๋ณธ๋ค.
๋์์ด๋์ ์ ์ฅ์์๋ ๊ฐ๋ฐ์๋ค์ด ์์ ํ๋ ์ปดํฌ๋ํธ๋ค์ ๊ณ์ ๋ณด๋ฉฐ ์ํตํ ์ ์๋ ์ ์ด ์ข์๋ค. storybook์์ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ์ปดํฌ๋ํธ UI๋ค์ด ๋ฌธ์ํ๋์ด ๋ค๋ฅธ ์ฌ๋๋ค๋ ๋ณด๊ธฐ ์ข๊ฒ ๊ณต์ ํ ์ ์๋ค. ์์ ์๋ ๋ค ๋ง๋ค๊ณ ์ ์ฉํ ๋ค์ ํ์ธํ๊ณ ์์ ์ ๊ฑฐ์ณค๋ค๋ฉด, storybook์ ์ด์ฉํ๋ฉด ๋ฐ๋ก๋ฐ๋ก ๋น ๋ฅธ ํผ๋๋ฐฑ์ด ๊ฐ๋ฅํ๋ค. main๋ธ๋์น์ ํธ์ฌ๊ฐ ๋๋ฉด Github Action์ ํตํด ๋ฐ๋ก๋ฐ๋ก github page์ ๋ฐฐํฌ๋ฅผ ์์ผ์ค์ผ๋ก์ ํธํ๊ฒ ์ด์ฉํ ์ ์์๋ค.
์ ์ผ ๋ง์์ ๋ค์๋๊ฑด ์ฌ๋ฌ์ฌ๋์ด ๊ฐ์ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ์์ ํ๋๋ผ๋ ์ด๋ฏธ ๋ง๋ค์ด์ง ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด์ ์์ ํ๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์ ์ธ ๋์์ธ์ด ์ด๊ธ๋ ์ผ์ด ๊ฑฐ์ ์๊ฒ ๋ค๋ ๊ฒ.. ์ ์ผ ๊ฑฑ์ ํ๋ ๋ถ๋ถ์ธ๋ฐ ๊น๋ํ๊ฒ ํด๊ฒฐ๋์ด์ ๋ง์์ด ๋งค์ฐ ํธํ๋ค!!
๊ฐ๋ฐ์์ ์ ์ฅ์์๋ ๋์ฑ ๋ ์ปดํฌ๋ํธ๋ต๊ฒ ๋ง๋ค๋ ค๊ณ ๋ ธ๋ ฅํ๊ฒ ๋์๋ค. ์ฒ์๋ถํฐ ์ฌ์ฌ์ฉ์ ์ผ๋์ ๋๊ณ ๋ง๋๋ ์ปดํฌ๋ํธ์ด๊ธฐ ๋๋ฌธ์ ํ๋์ ์ปดํฌ๋ํธ์ ์ฌ์ฉ๋๋ props ํ๋ํ๋์ ๊ณ ๋ฏผ์ ๋ ํ๊ณ ์๋ค.
๊ฐ๋ฐ์ ์งํํ๋ ํ๋ก ํธ ํ๋ก์ ํธ์ ์ํฅ์ ๋ฐ์ง ์๊ณ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ง๋ค๊ณ ํ ์คํธํ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ธฐ๊ฐ์ ์ ๋ฐ์ ์ปดํฌ๋ํธ ๊ฐ๋ฐํ๋๋ฐ ์ก๊ณ , ๋๋จธ์ง ์ ๋ฐ์ ๋ง๋ค์ด์ง ์ปดํฌ๋ํธ๋ฅผ ํ๋ก ํธ ํ๋ก์ ํธ์์ ๋ถ๋ฌ์ ์กฐ๋ฆฝํ๋ ๋ฐ์ ์ก์๋ค. ํจ์ ํ์ ํ๊ธฐ ์ข์ ๊ตฌ์กฐ์ธ ๊ฒ ๊ฐ๋ค.
์ด์ ์ ์ด๋ฐ ๋๊ตฌ๋ค์ ๋์ ํ๋๋ฐ 'ํผ์ ๊ณต๋ถํ๋๋ฐ ๋ญ ์ด๋ฐ๊ฑธ ๊ตณ์ด ์๋ก ๋ฐฐ์์ ํ๋' ํ๋ ์๊ฐ์ด ๋ค์ด์ ๊ทธ๋ฅ ๋์ด๊ฐ๋ ๊ฒฝํ์ด ์์๋ค. ์ด๋ฒ์ ์์ ํ๋ก์ ํธ์ง๋ง ์ฌ๋ฌ๋ช ์ด ํ์ ํ๋ ๊ณผ์ ์์ ์ถฉ๋ถํ ์จ๋ณผ๋งํ ๋๊ตฌ๋ผ๊ณ ๋๋๋ค.