๊ฐ์
ํ์ฌ woori-codeshare ํ๋ก์ ํธ๋ ์ฌ๋ฌ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ก ์ธํด ์ ์ง๋ณด์์ฑ๊ณผ ๊ฐ๋ฐ ํจ์จ์ฑ์ด ์ ํ๋๊ณ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ข
ํฉ์ ์ธ ๋ฆฌํฉํ ๋ง์ด ํ์ํ๋ค.
์ฃผ์ ๋ฌธ์ ์ ๋ถ์
1. ํ์
์์ ์ฑ ๋ถ์กฑ (JS โ TS ๋ง์ด๊ทธ๋ ์ด์
ํ์)
๋ฌธ์ ์
- WebSocket ์ด๋ฒคํธ ํ์
๋ณด์ฅ ๋ถ๊ฐ:
JSON.parse(message.body) ๊ฒฐ๊ณผ์ ํ์
์์ ์ฑ ๋ถ์กฑ
- API ์๋ต ํ์
๊ฒ์ฆ ๋ถ์ฌ: ๋ฐํ์์์๋ง ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค๋ฅ ๋ฐ๊ฒฌ
- ์ปดํ์ผ ํ์ ์๋ฌ ๊ฒ์ถ ๋ถ๊ฐ: ์์ฑ๋ช
์คํ, ์๋ชป๋ ํจ์ ํธ์ถ ๋ฑ
2. Props Drilling ๋ฌธ์
๋ฌธ์ ์
- ๊ณผ๋ํ Props ์ ๋ฌ: ์ปดํฌ๋ํธ ๊ณ์ธต์ ํตํด ์ฌ๋ฌ ๊ฐ๋ณ props ์ ๋ฌ
- ์ฝ๋ ๊ฐ๋
์ฑ ์ ํ: props ๊ฐ์ ์ฆ๊ฐ๋ก ์ธํ ํจ์ ์๊ทธ๋์ฒ ๋ณต์กํ
- ์ ์ง๋ณด์์ฑ ์
ํ: props ์ถ๊ฐ/์ญ์ ์ ์ฌ๋ฌ ์ปดํฌ๋ํธ ์์ ํ์
3. ์๋ฆผ ์์คํ
์ผ๊ด์ฑ ๋ถ์กฑ
๋ฌธ์ ์
- Alert Context์ react-toastify ํผ์ฌ: ๋ ๊ฐ์ง ์๋ฆผ ์์คํ
๋์ ์ฌ์ฉ
- ์ผ๊ด์ฑ ์๋ UX: ์๋ฆผ ์คํ์ผ๊ณผ ๋์์ด ํต์ผ๋์ง ์์
- ์ฝ๋ ์ค๋ณต: ์ ์ฌํ ์๋ฆผ ๋ก์ง์ ์ค๋ณต ๊ตฌํ
4. WebSocket ๊ตฌ๋
๋ก์ง ๋ถ์ฐ
๋ฌธ์ ์
- ์ปดํฌ๋ํธ๋ณ ๊ฐ๋ณ ๊ตฌ๋
: ๊ฐ ์ปดํฌ๋ํธ์์ ๋
๋ฆฝ์ ์ผ๋ก WebSocket ๊ตฌ๋
- ์ค๋ณต ๊ตฌ๋
์ํ: ๊ฐ์ ํ ํฝ์ ์ฌ๋ฌ ๊ณณ์์ ๊ตฌ๋
ํ ๊ฐ๋ฅ์ฑ
- ์ํ ๋๊ธฐํ ์ด๋ ค์: WebSocket ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ก์ง์ด ๋ถ์ฐ๋์ด ์ผ๊ด์ฑ ๋ถ์กฑ
5. ๋ถํ์ํ ์ฝ๋
๋ฌธ์ ์
- ์ฌ์ฉ๋์ง ์๋ ์ฝ๋ ์กด์ฌ:
room-users-count.js๊ณผ ๊ฐ์ด ์ฌ์ฉ๋์ง ์๋ ์ฝ๋ ์กด์ฌ
๊ฐ์
ํ์ฌ woori-codeshare ํ๋ก์ ํธ๋ ์ฌ๋ฌ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ก ์ธํด ์ ์ง๋ณด์์ฑ๊ณผ ๊ฐ๋ฐ ํจ์จ์ฑ์ด ์ ํ๋๊ณ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ข ํฉ์ ์ธ ๋ฆฌํฉํ ๋ง์ด ํ์ํ๋ค.
์ฃผ์ ๋ฌธ์ ์ ๋ถ์
1. ํ์ ์์ ์ฑ ๋ถ์กฑ (JS โ TS ๋ง์ด๊ทธ๋ ์ด์ ํ์)
๋ฌธ์ ์
JSON.parse(message.body)๊ฒฐ๊ณผ์ ํ์ ์์ ์ฑ ๋ถ์กฑ2. Props Drilling ๋ฌธ์
๋ฌธ์ ์
3. ์๋ฆผ ์์คํ ์ผ๊ด์ฑ ๋ถ์กฑ
๋ฌธ์ ์
4. WebSocket ๊ตฌ๋ ๋ก์ง ๋ถ์ฐ
๋ฌธ์ ์
5. ๋ถํ์ํ ์ฝ๋
๋ฌธ์ ์
room-users-count.js๊ณผ ๊ฐ์ด ์ฌ์ฉ๋์ง ์๋ ์ฝ๋ ์กด์ฌ