๐ย ํ๋ก์ ํธ ์๊ฐ
ํ๋ก์ ํธ ๊ฐ์
- ๊ธฐ๊ฐ : 23.12. ~ 24.01. 1์ฃผ
- ์ธ์ : FE 4๋ช
- ํ ์ค ์ค๋ช
: ์ด์ฌํ ๋ง๋ ํ๋ก์ ํธ๋ฅผ ํ์ธ๊ณผ ๊ณต์ ํ๊ณ ์ฐ, ๋๊ธ, ํผ๋๋ฐฑ์ ํตํ ์ปค๋ฎค๋ํฐ ์ฌ์ดํธ
- ๋งํฌ : Github / Site / Figma
์์ฐ ๋ฐ ์์
https://youtu.be/xa74497iGok
ํ๋ก์ ํธ ๋ฐฐ๊ฒฝ
๊ฒ์๊ธ์ ํตํด ํ๋ก์ ํธ๋ฅผ ๊ณต์ ํ ๋ ์ฌ๋๋ค์ ๊ด์ฌ์ด๋ ํผ๋๋ฐฑ ๋ฑ์ด ํ๋์ ๋ณด์ด์ง ์์ ๋ถํธํจ์ ๊ฐ์ ํ๊ณ , ๋ ์ง์์ ์ผ๋ก ํผ๋๋ฐฑ์ ๊ด๋ฆฌํ๊ธฐ ํ๋ ๋ถ๋ถ์ ๋ฌธ์ ์ ์ ๊ฐ์ ํ๊ณ ๋ฒ๋ ค์ง๋ ํ๋ก์ ํธ ์์ด ๋ณธ์ธ์ด ๋ง๋ ํ๋ก์ ํธ๋ฅผ ๊ณต์ ํ ์ ์๋ ์น ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ ์ ์งํํ์๋ค.
ํ๋ก์ ํธ ์ค๋ช
Bazoba(๋ฐ์กฐ๋ฐ)๋ ์๋ํฐ๋ฅผ ํตํด์ ํ๋ก์ ํธ์ ๋ด์ฉ์ ๋ํด์ ์์ฑํ์ฌ ๊ฒ์๊ธ์ ํํ๋ก ํ์ธํ ์ ์์ผ๋ฉฐ ๋ถ๋งํฌ, ๋๊ธ๊ณผ ๊ฐ์ด ํ ์ฌ์ฉ์๋ค๊ฐ์ ์ํต ์ฐฝ๊ตฌ๋ฅผ ์ ๊ณตํ๊ณ ํนํ ํ๋ก์ ํธ ๊ด๋ จ ๋ฉค๋ฒ๋ง ์ ํ์ ์ผ๋ก ํ์ธํ ์ ์๋ ๋ฆฌ๋ทฐ ๊ธฐ๋ฅ์ ํตํด ํ๋ก์ ํธ์ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์๋ค.
ํ๋ก์ ํธ ๊ธฐ๋ฅ
- ์ฝ๋ฉํธ : ์์ ๋ฉ์์ง ๋ฑ ์์ ๋ก์ด ๋ด์ฉ์ ๋๊ธ ๋ฑ๋ก ๊ธฐ๋ฅ
- ๋ฆฌ๋ทฐ : ํ๋ก์ ํธ ๊ฒ์์ / ํ ๋ฉค๋ฒ์ ๋ฆฌ๋ทฐ ๊ฒ์์๋ง ์ ํ์ ์ผ๋ก ๋ณผ ์ ์๋ ๋ฆฌ๋ทฐ ๊ธฐ๋ฅ
- ์ค์๊ฐ ์๋ฆผ : ๋ด๊ฐ ๊ฒ์ํ ํ๋ก์ ํธ์ ๋๊ธ / ์ข์์ / ๋ถ๋งํฌ ์์ ๊ฒ์์ ๊ณ์ ์ ์ค์๊ฐ ์๋ฆผ ๊ธฐ๋ฅ
- co-author : ํ๋ก์ ํธ์ ์ฐธ์ฌํ ๋ฉค๋ฒ๋ฅผ ๊ฒ์๋ฌผ์ ํ์
- ์ข์์ / ๋ถ๋งํฌ ๊ธฐ๋ฅ : ํ๋ก์ ํธ์ ๋ํ ๊ด์ฌ์ ํํ ์ ์๋ ๊ธฐ๋ฅ
- ์๋ํฐ : WYSIWYG ์๋ํฐ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋ณด๋ค ์ฝ๊ฒ ์์ฑํ ์ ์๊ฒ ํจ
- ์๋ฐํ : ์ฌ์ฉ์ uid ํด์ฑ์ ํตํด ๋๋ค ๋ํดํธ ์๋ฐํ ์์ฑ
๊ธฐ์ ์คํ
- ๊ณตํต ๋ฐ ๋ฐฐํฌ : Yarn Berry, Git, GitHub, Vercel
- Core : TypeScript, React, React-Router,
- State Management : Recoil, React Query,
- Styling : Ant Design, Styled Components, Framer Motion,
- BasS : Supabase
- ETC : Toast-UI Editor, Toastify, Ramda, React Hook Form, React Icons
โ
ย ๊ธฐ์ฌํ ๋ถ๋ถ
Toast-UI Editor๋ฅผ ์ด์ฉํ ์๋ํฐ ํ์ด์ง ์์ฑ
- ์ปค์คํ
ํ
์ ํตํ ์๋ํฐ ๊ด๋ จ ์ํ ๊ด๋ฆฌ ๋ก์ง( ๊ธ ์์ฑ, ์์ , ์นดํ
๊ณ ๋ฆฌ ๋ฐ ์ ๋ชฉ ์ฒ๋ฆฌ, ์ด๋ฏธ์ง ์
๋ก๋) ๋ถ๋ฆฌ
- WYSIWYG ์๋ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๋ณธ๋ฌธ ์์ฑ ๋ฐ ์ด๋ฏธ์ง ์
๋ก๋ ๊ธฐ๋ฅ ์ ๊ณต
- supabase Storage, DB ํตํด ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ
Supabase ์ฝ์ด ํจ์ ์์ฑ
- Supabase CRUD ์ฝ์ด ํจ์๋ฅผ ์์ฑํ์ฌ ์ฌ์ฌ์ฉ์ฑ ํฅ์
Mention ๊ธฐ๋ฅ ๊ตฌํ
- debounce ๊ธฐ์ ์ ์ ์ฉํ์ฌ ๊ฒ์ ์ ๋ถํ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ
- custom debounce์ react-query๋ฅผ ์กฐํฉํ์ฌ ๊ตฌํ
๋ฌดํ ์คํฌ๋กค ๊ธฐ๋ฅ ๊ตฌํ
- react-query์ infiniteQuery๋ฅผ ํตํ์ฌ ๊ตฌํ
- supabase query๋ฅผ ํตํด range๋ก ๋ฐ์ดํฐ ๋ชฉ๋ก์ ๊ตฌ๋ถํ๊ณ page param ๊ณ์ฐ ๋ฐฉ์์ผ๋ก ๊ตฌํ
Exhaustiveness Checking์ผ๋ก ์ ํํ ํ์
๋ถ๊ธฐ ์ ์ง
- switch ๋ฌธ์์ exhaustiveness checking์ ์ํด never ์ฌ์ฉ
๐ ๏ธย ํธ๋ฌ๋ธ ์ํ
React Unmount ์ ๋๋ฉ์ด์
๊ตฌํ
- React์์๋ ์ปดํฌ๋ํธ Unmount ์์ ์ ๋๋ฉ์ด์
์ด ์ ์ฉ๋์ง ์๊ณ ๋ฐ๋ก ์ฌ๋ผ์ง
- ๋ฐ๋ผ์ ๋ณ๋ ์ํ๊ฐ์ ์ด์ฉํ์ฌ ํด๋น ์ปดํฌ๋ํธ์ ์ ๋๋ฉ์ด์
์ด ์ข
๋ฃ๋๋ฉด ์ฌ๋ผ์ง ์ ์๋๋ก ์กฐ์น
- onAnimationEnd ์ด๋ฒคํธ ํธ๋ค๋ฌ์ shouldRender ์ํ๊ฐ์ ์ด์ฉํ์ฌ ๋ก์ง ๊ตฌํ
- ์ปค์คํ
ํ
์ ์ด์ฉํ์ฌ ๋ก์ง์ ์ฌ์ฌ์ฉ์ฑ์ ํฅ์์ํค๊ณ ๋ค์ํ ์ปดํฌ๋ํธ์ ์ ์ฉํ ์ ์๋๋ก ๊ตฌํ