์ง๋์ฃผ ๊ธ์์ผ์ ํ๋ก์ ํธ ๋ฐํ๋ฅผ ๋ง์น ๐ฅ๋ฌ์ฌ์ฝ๋ฆฌ์ ํด๋ก ํ๋ก์ ํธ๐ฅ์ ๋ํ ํ๊ณ ๋ฅผ ์์ํด๋ณด๋ ค๊ณ ํด์. ์ ํฌ 4ํ์ ๋ฌ์ฌ์ฝ๋ฆฌ์์ LUSH๋ฅผ HUSH๋ก ๋ณ๊ฒฝํด ์ค์์ฉํ์ด ์๋ ๋์ ํธ๋ฅ๋ฅผ ํ๋งคํ๋ ์ฌ์ดํธ๋ฅผ ๋ง๋ค์์ด์(์ ์๊ถ ์ ๋ ์ง์ผ๐๐ป). ๋ฌ์ฌ์ ๋ฐ์์ด ์ ์ฌํ ํ์ฌ(Hershey)์ด์ฝ๋ฆฟ์์ ์๊ฐ์ ๋ฐ์๋ต๋๋ค!
์ด๋ ๊ฒ ํ๋ก ํธ์ ๋ฐฑ์ด ๋ชจ์ฌ ์ ๋๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ ๊ฑด ์ฒ์์ด์๊ธฐ์ ์ฌ๋ฌ ๋ฐฉ๋ฉด์์ ์ ์์ ์ ๋ํ ๋ถ์กฑํจ์ ๋ง์ด ๋๊ผ๊ณ ๊ทธ๋์ ๋ฐฐ์ธ ์ ์ด ์ฐธ ๋ง์๋ ์ฒซ ํ๋ก์ ํธ์์ด์. ํ์ ๋ฐฉ์, ์ผ์ ๊ด๋ฆฌ, ๋ฆฌ์กํธ ๋ ๋๋ง, ํต์ ๋ฑ.. ๋ชจ๋ ๋ฉด์์์! ์ด๋ฒ 1์ฐจ ํ๋ก์ ํธ๋ฅผ ํ๊ณ ํ๋ฉฐ ๊ฐ์ ํด์ผํ ๋ถ๋ถ์ ๋ํด ์ ๋ฆฌํ๊ณ , ๋ ์ฑ์ฅํ ๋ชจ์ต์ผ๋ก 2์ฐจ ํ๋ก์ ํธ๋ฅผ ์์ํด๋ณด๋ ค๊ณ ํด์!
2์ฃผ๊ฐ ์ด๋ ๊ฒ ์งง์๋ ์ ์ด ์์๋ ์ถ์ด์. ์ ๋ง ๋๊น์งํ ์ฌ์ด์ 2์ฃผ๊ฐ ์ง๋์์์ด์. ๋ ์ด์์์ด๋ ๊ธฐ๋ฅ ๊ตฌํ์ 1์ฃผ์ฐจ์ ๊ฑฐ์ ๋ง๋ฌด๋ฆฌ๊ฐ ๋์๊ณ , ๊ทธ ์ดํ๋ก๋ ์ฝ๋๋ฅผ ์์ /๊ฐ์ ํ๊ณ ํต์ ํ๋ ๋ฐ์ ์๊ฐ์ ๋ณด๋์ด์.
2์ฃผ (22๋ 09์ 19์ผ ~ 22๋ 09์ 29์ผ)
ํ๋ก ํธ์๋ 4๋ช (๊ฐ๋ฃจ๋น, ๊น๋ํธ, ์์๋ฌธ, ์ฃผํ๋ฆฐ), ๋ฐฑ์๋ 3๋ช (๊น์ ํ, ์ ์น๋ ฌ, ์ ๋ค์)์ด ํจ๊ป ํ๋ก์ ํธ๋ฅผ ์งํํ์ด์.
Front-end
React
,SASS
โฝ CRA(Create-React-App)์ ํตํ ๋ฆฌ์กํธ ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ
โฝ ํจ์ํ ์ปดํฌ๋ํธ ์ฌ์ฉ
โฝ ESLint, Prettier ์ค์ Back-end
Node.js
,Express.js
,MySQL
co-work
Github
,Slack
(์ํต),Trello
(์ผ์ ๊ด๋ฆฌ),Notion
(ํ์๋ก)
์ผ์ ๊ด๋ฆฌ๋ Trello
๋ฅผ ์ฌ์ฉํ์ด์. This sprint
์๋ ์ด๋ฒ ์ฃผ๊น์ง ํด์ผํ ์ผ์, In progress
๋ ์ง๊ธ ์งํ ์ค์ธ ์์
์, In Review
๋ PR์ ์ฌ๋ฆฌ๊ณ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ ์๋ ์์
์, Done
์ ๋ฆฌ๋ทฐ๊น์ง ๋ฐ์๋ผ merge์๋ฃ๋ ์์
์ ์ฌ๋ ธ์ด์. ๋ ์ด์์ ๊ตฌํ๊ณผ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ค๋ฅธ ํฐ์ผ์ผ๋ก ๋๋์ด ์ฌ๋ ค ๊ตฌ๋ถ์ง์๋ต๋๋ค.
์์ฌ์ด ์ ์ด ์๋ค๋ฉด, ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ์ ๊ธ๊ธํด ์
๋ฐ์ดํธ๋ ๋ด์ฉ์ ๋ฐ์ํ์ง ์์ ๋ ๋ ์๋ค๋ ๊ฒ์ด์์ด์. ์ง๊ธ์ด์ผ ๋์ฐฉํ๋ฉด ํ์๋ค์ด ๊ฐ๊น์ด ๋ชจ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ์ง๋ง, ํ์
์ ๊ฐ๋ฉด ์ฌํ์ ํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์๋ก์ ์ํฉ์ ์ ๋๋ก ์ ์ ์์ ์ ์๊ฒ ๋๋ผ๊ตฌ์. 2์ฐจ ํ๋ก์ ํธ์๋ ๋งค์ผ ๋์ฐฉํ์๋ง์ Trello
๋ฅผ ํ์ธํ๊ณ ์
๋ฐ์ดํธ/๊ด๋ฆฌํ๋ ๊ฒ์ ๊ธฐ๋ณธ ์ค์ ๊ธฐ๋ณธ์ผ๋ก! ๊ฐ์ ธ๊ฐ๊ณ ์ ํด์.
Trello
๋ก ์ผ์ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ๋ ํ์ง๋ง, ์๋ ๋ก๊ทธํฑํ ๊ฐฌ์ฑ์ผ๋ก ๊ณํ์ง๋ ๊ฒ์ ์ข์ํ๋ ์ ๋ ๊ทธ ๋ ๊ทธ ๋ ํด์ํ ์ผ์ด๋ ๊ธฐ์ตํด์ผํ ์ฌํญ์ ์ ์ด๋๋๋ฐ ํ๋๋๋ฅผ ์ฌ์ฉํ์ด์. ํ์ง๋ง, ์ด๋ฐ ํ๋๋๋ ์ ๋ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ต๋ํ Trello
์ ๋ ๋ํ
์ผํ ๋ด์ฉ์ ์ฐ๊ณ ์ ๋
ธ๋ ฅํด์ผ๊ฒ ๋จ ์๊ฐ์ด ๋ค์ด์.
(๋
ธํธ์ ๋จ์ด์ ธ ์๋ ์๊ตญ์ ์ฝํผ ์๊ตญ์ด์์ผ๋ฉด ์ข์๊ฒ ์ง๋ง..์ปคํผ ์๊ตญ..โ์ฝํผ ์๊ตญ์ด ๋๋ ๊ทธ๋ ๊น์ง..๐๐ปโโ๏ธ)
์ ํฌ ํ ํ๋ก ํธ๋ ํ์ด์ง๋ณ๋ก ๋๋ ๋ด๋นํ์ด์. ์ ๋ ์์ผ๋ก ํ์ํ ๊ฒ๊ณผ ๊ฐ์ด ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ์ฅ๋ฐ๊ตฌ๋, ์ฐ๋ชฉ๋ก์ ๋ด๋นํด ๊ตฌํํ๋ต๋๋ค.
1. ํ์๊ฐ์ , ๋ก๊ทธ์ธ
2. ๋ฉ์ธ ํ์ด์ง
3. ์ ํ ํ์ด์ง
4. ์์ธ ํ์ด์ง
5. ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง
6. ์ฐ ๋ชฉ๋ก ํ์ด์ง
7. ๊ฒฐ์ ํ์ด์ง
ํ์๊ฐ์
์, ์ด๋ฏธ ํ์๊ฐ์
๋ ์ด๋ฉ์ผ์ ์ฌ์ฉํ ์ ์๋๋ก ์ค๋ณต ํ์ธ ๊ธฐ๋ฅ์ ๋ฃ์ด์ฃผ์์ด์. ์ค๋ณต ํ์ธ์ ํ์ง ์๊ณ ํ์๊ฐ์
๋ฒํผ์ ๋๋ฅด๋ฉด ์ค๋ณต ํ์ธ
์ ํ๋ผ๋ alert์ฐฝ์ด ๋จ๋๋ก ๋ง๋ค์ด์ฃผ์๋ต๋๋ค.
์ ๊น!๐๐ป ๊ธฐ์ต์ ๋จ๋ ์ฝ๋๊ฐ ์๋ค๋ฉด?
์ค๋ณตํ์ธ์ ํ๋์ง, ์ํ๋์ง๋ฅผ
isCheckEmail
์ด๋ผ๋ state๋ก ๊ด๋ฆฌํด์ฃผ์์ด์. ๊ทธ๋์ ์ค๋ณต ํ์ธํ๋ API์์ฒญ์์ ์ฑ๊ณต ๋ฉ์์ง๋ฅผ ๋ฐ์ผ๋ฉดisCheckEmail
์ true๋ก ๋ฐ๊ฟ์ฃผ์๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ก ๋ฐ๊ฟ์ฃผ์์ฃ .const [isCheckEmail, setIsCheckEmail] = useState(false);
๊ทธ๋ฆฌ๊ณ ์ต์ข ์ ์ผ๋ก ํ์๊ฐ์ form์ ์ ์ถํ ๋
isCheckEmail
์ด true์ผ ๋๋ ํ์๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ๋ณด๋๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ alert๋ฅผ ๋์ ์ด์. ์๋์ ๊ฐ์ดif...else
๋ฌธ์ ์ฌ์ฉํ์ฃ .const submitForm = e => { if (isCheckEmail) { fetch('http://000.000.000.000:3001/user/signup', { // ์๋ต }); } else { alert('์ด๋ฉ์ผ ์ค๋ณต์ ํ์ธํด์ฃผ์ธ์.'); } };
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ผ๋ฉฐ
if...else
๋ฌธ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ์์ฑํ ์ ์๋ ๋ฒ์ ์๊ฒ ๋์์ด์. ์ด๋ฉ์ผ ์ค๋ณต ํ์ธ์ ์คํจํ๋ฉด ๋ฐ๋ก alert๋ฅผ ์คํํ๊ณ returnํจ์ผ๋ก์จ ํจ์๋ฅผ ๋๋ด๋ฒ๋ฆฌ๋ ๋ฐฉ๋ฒ์ด์์ฃ ! ์ด๋ฉ์ผ์ด ์ค๋ณต๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ธ๋ฐ์์ด if๋ฌธ์ ๊ธด ์ฝ๋๋ฅผ ์ฝ์ด๋ด๋ ค๊ฐ ํ์๊ฐ ์์ผ๋ ๋ฏธ๋ฆฌ ๋๋ด๋ฒ๋ฆฌ๋ ํจ์จ์ ์ธ ์ฝ๋๋ผ๊ณ ์๊ฐํ์ด์.const submitForm = e => { if (!isCheckEmail) { alert('์ด๋ฉ์ผ ์ค๋ณต์ ํ์ธํด์ฃผ์ธ์.'); return; } fetch('http://000.000.000.000:3001/user/signup', { // ์๋ต }); };
์ด๋ฉ์ผ์ด๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค๋ฅด๊ฒ ์์ฑํ์ ๋, ๊ทธ์ ๋ง๋ alert์ฐฝ์ ๋์์ฃผ์์ด์.
์ ๊น!๐๐ป ๊ธฐ์ต์ ๋จ๋ ์ฝ๋๊ฐ ์๋ค๋ฉด?
์์ฒญ์ ๋ํ ์๋ต ๋ฉ์์ง์ ๋ฐ๋ผ access token์ ์ ์ฅํ๊ฑฐ๋ alert์ฐฝ์ ๋์ฐ๊ฒ ๋ง๋ค๊ณ ์ ํ์ด์.
if...else if
๋ก ๋๋์ด์ฃผ๋ฉด ๋๊ฒ ๋ค๊ณ ์๊ฐํด ์๋์ ๊ฐ์ด ๋๋์ด์ฃผ์์ฃ .if (data.message === 'ACCESS_SUCCESS') { localStorage.setItem('accessToken', data.accessToken); alert('๋ก๊ทธ์ธ ์ฑ๊ณต'); } else if (data.message === 'WRONG_EMAIL') { alert('์ด๋ฉ์ผ ๋ค์'); } else if (data.message === 'WRONG_PASSWORD') { alert('๋น๋ฐ๋ฒํธ ๋ค์'); }
ํ์ง๋ง, ์๊น ๊ธฐ์ต์ ๋จ๋ ์ฝ๋ ์ฒซ๋ฒ์งธ์ ๊ฒฝ์ฐ์ ๊ฐ์ด
if...else if
๋ก ์ฝ๋๋ฅผ ์ญ ๋์ดํ ํ์๊ฐ ์์์ด์. ๋ง์ฝ ๋ก๊ทธ์ธ ์ฑ๊ณต์ด๋ผ๋ฉด ๋ฐ๋กreturn
ํจ์ผ๋ก์จ ์ธ๋ฐ์์ด ๋ฐ์ ์ฝ๋๋ฅผ ์ฝ์ด๊ฐ ํ์๊ฐ ์๊ฒ ํ ์ ์์์ฃ .if (data.message === 'ACCESS_SUCCESS') { localStorage.setItem('accessToken', data.accessToken); alert('๋ก๊ทธ์ธ ์ฑ๊ณต!'); navigate('/'); return; } if (ERROR_MSG[data.message]) { alert(ERROR_MSG[data.message]); return; } alert('๋ก๊ทธ์ธ ์คํจ!');
๋ํ, ์๋ฌ ๋ฉ์์ง ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ์์ ๋ฐ์ดํฐ๋ก ๊ด๋ฆฌํด์ค ์ ์์ด์.
const ERROR_MSG = { WRONG_EMAIL: '์ด๋ฉ์ผ์ ๋ค์ ์์ฑํด์ฃผ์ธ์.', WRONG_PASSWORD: '๋น๋ฐ๋ฒํธ๋ฅผ ๋ค์ ์์ฑํด์ฃผ์ธ์.', };
์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธด ์ํ ๋ชฉ๋ก์ ๋ถ๋ฌ์ ์๋์ ์กฐ์ ํ๊ณ ์ ํ ์ฃผ๋ฌธ ๋ฐ ์ญ์ ๊ฐ ๊ฐ๋ฅํ ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง๋ฅผ ๋ง๋ค์์ด์. ์ด ํ์ด์ง๋ฅผ ๋ง๋ค๋ฉฐ ์ ๋ง ๋ค์ํ ์ด๋ ค์์ด ์์๊ณ , ๊ทธ๋์ ๋ฐฐ์ด์ ์ญ์ ๋ง์์ด์.
โก ์ด๋ ค์1.
setState()
๋ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ค๋ ๊ฒ์ฒซ ๋ฒ์งธ ์ด๋ ค์์ checkbox๋ก ์ ํํ ์ํ์ ๋ฐฐ์ด์ ๋ด๋ ๋ฐ์์ ์๊ฒผ์ด์. ํด๋น ๋ฐฐ์ด์ state๋ก ๊ด๋ฆฌํด์ฃผ์์๊ธฐ ๋๋ฌธ์, ์ ํ ์ํ์ ํด๋ฆญํ๋ฉด setState๋ก ๋ฐฐ์ด์ ์ํ์ ์ถ๊ฐํด์ฃผ์์ฃ . ์ด ๋, ์ ๋ setState๊ฐ ์คํ๋๋ ๋ณ๋์ ํจ์ ์์์ console๋ก ๋ฐฐ์ด์ ๋ด๊ธด ์ํ์ ํ์ธํ์ด์. ๊ทธ๋ฌ๋๋ ํ ๋ฐ์์ฉ ๋๋ฆฌ๊ฒ ์ํ์ด ๋ด๊ธฐ๋ ๊ฒ์ ํ์ธํ ์ ์์์ฃ .
setState์ ๊ฐ์ state ๋ณ๊ฒฝํจ์๋ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ค๋ ์ฌ์ค์ ์ธ์งํ๊ณ ์์ง ๋ชปํด ์์ฒญ ํค๋งจ ๊ฒฝ์ฐ์์ฃ . setState๋ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ setState๊ฐ ์คํ๋์ ๋ง์ state๊ฐ ๋ฐ๋ก ๋ณ๊ฒฝ๋๋๊ฒ ์๋๋ฐ ๋ง์ด์์. ํด๋น setState๊ฐ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ด๋ฉด, ๋ฐ์ ๋ค๋ฅธ ์ฝ๋๋ถํฐ ์คํํ๋ค๋ ๊ฒ ์์ง ์๊ธฐ!
โก ์ด๋ ค์2. ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ธฐ๋ ์ ์ ํ๋ฉด์ด ๊ทธ๋ ค์ง๋ ๊ฒ
์ด ๋ฌธ์ ๋ ํต์ ์ ํ๋ฉฐ ์๊ฒ ๋์ด์. ์ ํ ์์ธํ์ด์ง์์ ์ํ์ ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง์ ๋ด์ผ๋ฉด, ๋ฐ๋ก ๋ด๊ธฐ์ง ์๋ ๋ฌธ์ ์์ฃ . ์ด๋จ ๋๋ ๋ฐ๋ก ๋ด๊ธฐ๊ธฐ๋ ํ๊ตฌ์. ํ ํ ํฌ๊ฐ ๋๋ ธ์ด์. ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ๋ณด๋ค ํ๋ฉด์ด ๋จผ์ ๊ทธ๋ ค์ง๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ๋ฌธ์ ์์ด์.
์ ํ ์์ธํ์ด์ง์์ ์ํ์ ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ผ๋ฉด alert์ฐฝ๐ฅ์ ๋์์ฃผ์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ด์. alert์ฐฝ์ผ๋ก ์ธํด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ์๊ฐ์ด ์๊ฒจ ํด๊ฒฐ๋๊ฑฐ์์ฃ . ๋ค์ ํ๋ก์ ํธ ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋ loading์ค์ด๋ ๊ฒ์ ์ ์ ์๋๋ก UI๋ฅผ ๋ณด์ฌ์ฃผ๋๋ก ๊ตฌํํด๋ณด๊ณ ์ถ์ด์.
์ฅ๋ฐ๊ตฌ๋์ ๋์ผํ๊ฒ ๋จ์ผ ์ ํ/์ ์ฒด ์ ํ ์ญ์ ๊ฐ ๊ฐ๋ฅํ ์ฐ ํ์ด์ง๋ฅผ ๋ง๋ค์์ด์.
์ ๊น!๐๐ป ๊ธฐ์ต์ ๋จ๋ ์ฝ๋๊ฐ ์๋ค๋ฉด?
์ฒ์ ์ฐ๋ชฉ๋ก์ ๋ฐ์์ฌ ๋์, ํ๋ชฉ์ ์ญ์ ํ์ ๋, ์ด๋ ๊ฒ 2๋ฒ ์ฐ๋ชฉ๋ก ๋ฐ์ดํฐ๋ฅผ fetch์์ฒญ์ ๋ฐ์์์. ๊ทธ๋์ ๊ฐ๊ฐ์ ๊ฒฝ์ฐ์ ๋ชจ๋ ๋์ผํ fetch ์์ฒญ ์ฝ๋๋ฅผ ์์ฑํ์๋ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํตํด ํด๋น fetch์์ฒญ์ ํจ์๋ก ๋ฌถ์ด ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค๋ ๊ฒ์ ์๊ฒ๋์ด์. getData๋ผ๋ ํจ์๋ก ๋ฌถ์ด ์ฌ์ฌ์ฉํด์ฃผ์๋ต๋๋ค!
const getData = () => { fetch('http://000.00.00.0:3000/user/like', { headers: { authorization: accessToken, }, }) .then(response => { // ์๋ต }) .then(data => { setProductData(data.likes); }); };
# ์ํต
ํต์ ์ ํ๋ ๊ณผ์ ์์ ๋ณ๊ฒฝ์ฌํญ์ด ์๊ฑฐ๋ ๋ง์ถ๋ฉด ์ข๊ฒ ๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ์ง์ฒด์์ด ๋ํํด ์กฐ์จํ๋ค๋ ์ ์ด ์ํ ์ ์ด๋ผ๊ณ ์๊ฐํด์! ์๋ฅผ ๋ค์ด, ์ฅ๋ฐ๊ตฌ๋์์ ์๋์ ์กฐ์ ํ์ ๋ ์๋ฒ์ ์กฐ์ ํ ์๋ ์์ฒด๋ฅผ ์ ๋ฌํ ์๋ ์๊ณ , +1
์ธ์ง -1
์ธ์ง๋ง์ ์ ๋ฌํ ์๋ ์์์ด์. ์ด๋ป๊ฒ ์ ๋ฌํ๊ณ ๋ฐ์๊ฒ์ธ์ง์ ๋ํด ๋ง์ถฐ๋ณด์์ผ ํ์ฃ . ์ด๋ฐ ๋ถ๋ถ์ ์์ด์ ์๋ก ๊ฐ์ ์ํ๋ ์ผ ์์ด ์ํตํ๊ณ ์ ๋
ธ๋ ฅํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ํต์ ๊น์ง ์ ์ด์ด์ง ์ ์์๋จ ์๊ฐ์ด ๋ค์ด์
๊ทธ๋ฆฌ๊ณ ์ํต์ ์ฐ์ฅ์ ์์์ ๊นจ๋ฌ์ ์ ์ด ์๋ค๋ฉด, ์ค๋ช
์ ์ค์์ฑ์ด์์. ์ ๊ฐ ์์ฒญํ๊ณ ์ถ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ์ ํ์ํ๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊ฒ์ธ์ง ๋ํด ๋ช
ํํ ์๊ณ ๋ฐฑ์๋๋ถ๊ป๋ ์ถฉ๋ถํ ๋ฉ๋ํ ์ ์๊ฒ ์ค๋ช
ํ ์ ์์ด์ผํจ์ ๋๊ผ์ด์. ๋๊ตฌ๋ ์์๋ค์ ์ ์๊ฒ ์ค๋ช
ํ ์ ์๋ ๋ฅ๋ ฅ์ ํค์ฐ์๋ ๋ค์ง์ ํฉ๋๋ค๐ค
# ์ด๊ธฐ์ธํ
์ด๊ธฐ์ธํ
์ ์ฑ๊ธํ๊ฒ ํ๋ค๋ ์ ์ด ์์ฌ์์. ๊ณตํต์ผ๋ก ์ ์ฉํ style๋ค์ ์ค๊ฐ์ ์์ ํ๊ณ ์ถ๊ฐํ๋ ์ผ๋ ์๊ฒผ๊ณ , ESLint ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๊ณ์ ๋จ๋ ๋ฒ๊ฑฐ๋ก์๋ ์์์ด์. ํ์๋ค์ด clone ๋ฐ์ ์์
์ ์งํํ ๋ ์ด๋ฌํ ์ด์ ๋ก ์์
์ด ์ง์ฒด๋๋ ์ผ์ด ์๋๋ก ์ด๊ธฐ์ธํ
์ ๊ผผ๊ผผํ๊ฒ ์ฒดํฌํ ์๊ฐ์ด์์.
๋, ์ ๋ branch ์์ branch๋ฅผ ๋ง๋ค์ด ๊ฐ branch์ commit์ด ํฉ์ณ์ง์ฑ PR์ด ์ฌ๋ผ๊ฐ ํ์์ ๋ณด๊ธฐ๋ ํ๋ต๋๋ค,,์ ์๋ ์ด๋ฏธ์ง์ ์ด๋ก ๊ฐ์ง๊ฐ ๋ณด์ด์๋์๐ ๊ฒฐ๊ตญ ์ด๋ ๊ฒ branch์์ ๊ฐ์ง์ณ์ง branch๋ค์ ์ญ์ ํ๊ณ ๋ค์ master์์ branch๋ฅผ ๋ง๋ค๊ณ pushํด์ ํด๊ฒฐํ ์ ์์์ด์. ๊นํ๋ธ commit ์ด๋ ฅ์ด ๊ผฌ์ด์ง ์๊ฒ ๊ผญ ์ ๊ฒฝ์ฐ๊ธฐ!
# ์ค์ผ์ค ๊ด๋ฆฌ
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ merge๋๋ ์๊ฐ๊น์ง ๊ณ ๋ คํด์ ์ค์ผ์ค์ ์ง์ง ๋ชปํ์ด์. ๊ธฐ๋ฅ ๊ตฌํ๋ง ํ๋ฉด ๋๋ค๊ณ ์๊ฐํ์์ฃ . 2์ฐจ ํ๋ก์ ํธ ๋๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ ์์ ํด merge๋๋ ์๊ฐ๊น์ง ๊ณ ๋ คํ ์๊ฐ์ด์์. ๊ทธ๋ฌ๊ธฐ ์ํด์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ต๋ํ ๋นจ๋ฆฌ ๋ง๋ฌด๋ฆฌํด ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ ์์ /๋ณด์ํด๋๊ฐ ์๊ฐ์
๋๋ค!
# ๋ ๋๋ง
React ๋ ๋๋ง์ ๋ํ ๋ถ๋ถ์ ๊ผผ๊ผผํ๊ฒ ๊ณ ๋ คํ์ง ์์์ ๋ง์ ์ ์ฒด ํต์ ์ ํ์ ๋ ํ ํ
ํฌ ๋๋ฆฌ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ผ์ด ๋ง์์ด์. ๊ฐ๋ณ ํต์ ๋๋ ์ ๊ตฌํ๋์๊ธฐ์ ๋ ๋ฉ๋ถ์ด์๋ ๊ฒ ๊ฐ์์. ๊ธฐ๋ฅ ํ๋ํ๋์ ์ง์ฐฉํ๋๋ผ ํฐ ๊ทธ๋ฆผ์ ๋ณด์ง ๋ชปํ๊ฑฐ๋ผ๊ณ ์๊ฐํด์. ์ฌ์ ์ ์ด์ ๋ํ ๋ถ๋ถ์ ์ถฉ๋ถํ ๊ณ ๋ คํด ์ฝ๋๋ฅผ ์ง์ผ๊ฒ ๋ค๋ ๋ค์ง์ ํด๋ด
๋๋ค๐คง
# ๋ํ๋ก ๊ฐํ์์ง ๋ง๊ธฐ
์ ๊ตฌํ๋์ง ์๋ ๊ธฐ๋ฅ์ด ์์ ๋, ํผ์์ ๋๋๊ฑฐ๋ฆฌ๋ ์๊ฐ์ด ๋๋ฌด ๊ธธ์๋ ์ ์ด ์์ฌ์์. ์ด๊ฑธ๋ก ๊ธฐ๋ฅ ๊ตฌํ์ ๊ฑธ๋ฆฐ ์๊ฐ์ด ์ ์์๋ณด๋ค ์ข ๋๋ ๋ ๊ฒ ๊ฐ์์. ํ๋ก์ ํธ ๊ธฐ๊ฐ์ด ์งง์๊ธฐ ๋๋ฌธ์ ๋์ ํ ์๋๊ฒ ๋จ ํ๋จ์ด ์๋ฉด, ํจ๊ป ๊ณ ๋ฏผํด ๋น ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์์์ํ
๋ฐ ๋ง์ด์์. ๋ญ๊ฐ ์กฐ๊ธ๋ง ๋ ํ๋ฉด ๊ตฌํ๋ ๊ฑฐ๊ฐ๋จ ์๊ฐ์ด ์ปธ๋ ๊ฒ ๊ฐ์์๐ฉ ๋ด๊ฐ ๋งก์ ํํธ๋ ๋์ ์์ด ๋ด๊ฐ ์ฑ
์์ง๊ณ ํด๊ฒฐํด๋ด์ผํ๋จ,, ๊ทธ๋ฐ ์๊ฐ,,?
๋ค์ ํ๋ก์ ํธ ๋๋ ๋ํ๋ก ๊ฐํ์ง ์์ผ๋ ค๊ตฌ์! ์ ํด๊ฒฐ๋์ง ์๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ด๋ป๊ฒ ํ๋ฉด ํด๊ฒฐํ ์ ์๋ ์ง์ ๋ํด ์ถฉ๋ถํ ๊ณต์ ํ๋ ค๊ณ ํด์.
ํ์๋ถ๋ค๊ณผ ํจ๊ป๋ผ์ ๋ง์ง๋ง๊น์ง ํ๋ด์ ํ๋ก์ ํธ๋ฅผ ์ ๋๋ง์น ์ ์์์ด์๐ 2์ฃผ ๋์ ๊ณ์ ๋ฌ๋ฆฌ๋ 2์ฃผ์ฐจ ๋ง๋ฐ์ง ๊ฐ์๋ ์ฒด๋ ฅ์ ์ผ๋ก ์ฝ์ง ์๋๋ผ๊ตฌ์ใ ใ ๊ทธ๋ฐ๋ฐ ์๋ก ์ ๋์ง ์๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋์์ฃผ๊ธฐ๋ ํ๊ณ ๋์๋ฐ๊ธฐ๋ ํ๋ฉฐ ๊ฐ์ด ์ผ์ฐ์ผ์ฐํ๊ฒ ํฐ ํ์ด ๋๋ ๊ฒ ๊ฐ์์. ๊ทธ๋ฆฌ๊ณ ๋จน๋๊ฑฐ์ ์ง์ฌ์ธ ํ์๋ถ๋ค์ ๋ง๋ ์ค๊ฐ์ค๊ฐ ๋ง๋ ์์ฌํ๋ฉฐ ์๋์ง ์ถฉ์ ํ ์ ์์ด ๋ ์ข์์ต๋๋น(โแกโแกโ) ์ญ์ ํ๊ตญ์ธ์ ๋ฐฅ์ฌ..!๐
์ด์ ๋ด์ผ๋ถํฐ๋ 2์ฐจ ํ๋ก์ ํธ ์์์ด์์. ๊ธฐ๋๊ฐ ๋๋ฉด์ ์ด๋ค ์ด๋ ค์์ด ๊ธฐ๋ค๋ฆฌ๊ณ ์์์ง ๋ฌด์ญ๊ธฐ๋ ํ์ง๋ง!!!!! ๊ทธ๋ฌํ ์ด๋ ค์์ด ์ ๋ ๊ฐํ๊ฒ ๋ง๋๋ฆฌ๋ผ ๋ฏฟ์ต๋๋ค~!~! ๋ค ๋ค๋ฒผ~!~!๐๐ป ๋ด์ผ์ ์์์ผ๋ก 2์ฃผ ๋ค์ ์ ๋ ๋ ์ด๋ค ๋ชจ์ต์ผ๋ก ์ฑ์ฅํด ์์์ง ๋ํ๋ํ ์ค๋ ๋ ๋ง์์ผ๋ก,,ํ๊ณ ๋ฅผ ๋ง์นฉ๋๋ค๐
ํ์.. ๋ ๊ฒฝ๊ฐ์ฌ ๋ถํ์์ฃผ์๋ค์