-
Notifications
You must be signed in to change notification settings - Fork 1
๐ ๋คํฌ๋ชจ๋์์ ์๋ก๊ณ ์นจ ์ ๋ผ์ดํธ๋ชจ๋๊ฐ ์ ๊น ๋ณด์ด๋ ๋ฌธ์
๋ถ์ผ | ์์ฑ์ | ์์ฑ์ผ |
---|---|---|
FE | ์กฐ๋ฐฐ๊ฒฝ | 24๋ 12์ 03์ผ |
๋คํฌ๋ชจ๋์ผ ๋, ์๋ก๊ณ ์นจ์ ํ๋ฉด ๋ผ์ดํธ๋ชจ๋๊ฐ ์ ๊น ๋ณด์๋ค๊ฐ ๋คํฌ๋ชจ๋๋ก ์ธํ ๋๋ค.
์์ธ์ด ๋ญ๊น?
context๋ฅผ ํตํด์, ํ ๋ง๋ฅผ ์ฌ์ฉํด์ผํ๋ ์ปดํฌ๋ํธ์ ๋ฟ๋ ค์ฃผ๊ณ ์๋ค. (์ฌ์ด๋๋ฐ, ๊ทธ๋ํ)
// themeProvider.tsx
useEffect(() => {
document.body.classList.toggle('dark', theme === 'dark');
}, [theme]);
- theme์ด๋ผ๋ ํ ๋ง ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค, theme์ด dark์ผ ๋ body์ dark ํด๋์ค๋ฅผ ๋ฃ์ด์ฃผ์ด ํ๋ฉด์ ์ ๋ฐ์ดํธํ๋ค.
๋น์ฐํ theme์ด๋ผ๋ ์ํ๋ฅผ ๊ฐ์งํด์ผํ๋ useEffect๊ฐ ์ ํฉํ๋ค๊ณ ์๊ฐํ๋ค.
useEffect๋ฅผ ์ ๊ฑฐํ๊ณ document.body.classList.toggle('dark', theme === 'dark');
๋ง ์์ฑํ๋ค๋ฉด, ๊น๋นก์ ํ์์ด ์์ด์ง๋ค.
useEffect๋ก ๊ฐ์ธ๋ ๊ฒ๊ณผ ๊ทธ๋ ์ง ์์ ๊ฒ์ด ๋ฌด์จ ์ฐจ์ด๊ฐ ์๋๊ฑธ๊น?
-
useEffect๋ก ๊ฐ์ธ๋ ๊ฒฝ์ฐ
React DOM์ด ์ ๋ฐ์ดํธ๊ฐ ์๋ฃ๋ ํ์ useEffect๊ฐ ์คํ๋๋ฏ๋ก, ์ ๊น ์ง์ฐ์ด ๋ฐ์ํ ์ ์๋ค.
์ค์ ๋ก ๋๋ฒ๊น ์ ํด๋ณด๋ฉด, useEffect๊ฐ ์ต์ด ์คํ๋์ ๋ ๋ผ์ดํธ๋ชจ๋์ด๊ณ ๋ด๋ถ ๋ก์ง์ด ์คํ๋์ด์ผ๋ง ๋คํฌ๋ชจ๋๊ฐ ์ ์ฉ๋๋ค.
์ด ์ฐฐ๋์ ์๊ฐ์ด ์ฐ๋ฆฌ์๊ฒ ๊น๋นก์์ผ๋ก ๋ณด์ด๋ ๊ฒ์ด๋ค.
๊ฐ๋ฐ์๋๊ตฌ๋ฅผ ๋ณด๋ฉด useEffect ๋ด๋ถ์ ์์ ๋ ์ผ๋จ ๋ผ์ดํธ๋ชจ๋์ด๊ณ , document.bodyโฆ ๊ฐ ์คํ๋์ด์ผ ๋คํฌ๋ชจ๋๊ฐ ์ ์ฉ๋๋ค.
-
useEffect๋ก ๊ฐ์ธ์ง ์๋ ๊ฒฝ์ฐ
useEffect๋ก ๊ฐ์ธ์ง ์๋๋ค๋ฉด ๋ฆฌ์กํธ์ ๋ ๋๋ง ์ฌ์ดํด์ ์ผ๋ถ๋ก ์ทจ๊ธ๋์ด, ํ ๋ง ๋ณ๊ฒฝ์ด ๋ ๋๋ง ๊ณผ์ ์์ ๋ฐ๋ก ์คํ๋๋ค.
๋ํ
document.body.classList.toggle('dark', theme === 'dark');
์ฌ๊ธฐ์์ theme์ useState๋ก ๊ด๋ฆฌ๋๊ณ ์๊ธฐ ๋๋ฌธ์, ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํด๋น provider๊ฐ ๋ฆฌ๋ ๋๋ง ๋์ด ํ ๋ง ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ค.
- ๐ฉ FE ๊ธฐ์ ์ ํ์ด์
- โจ ์ฐจํธ์ ๋ฐ์ํ ๊ตฌํ๊ณผ useRef ํ์ ๋ฌธ์
- ๐ฃ ๋ถ๋ชจ ์์์ ์ํ์ ๋ฐ๋ผ ์์ ์์๋ ์คํ์ผ ๋ณํ ๋ถ์ฌํ๊ธฐ
- ๐ zod ๋์ ํ๊ธฐ
- ๐ useInfiniteQuery๋ฅผ ์ฌ์ฉํ ๊ทธ๋ํ ๋ฌดํ์คํฌ๋กค ๊ตฌํ
- ๐ซ ์ฌ์ฉ์์ ์์ ๋ณํ ์๋ ๊ทธ๋ํ ์คํฌ๋กค ๊ตฌํํ๊ธฐ
- ๐งช ์๋ง์ ๊ทธ๋ํ ๋ฐ์ดํฐ ์์ฒญ์ ์ด๋ป๊ฒ ์ค์ผ๊น
- ๐ ๋คํฌ๋ชจ๋์์ ์๋ก๊ณ ์นจ ์ ๋ผ์ดํธ๋ชจ๋๊ฐ ์ ๊น ๋ณด์ด๋ ๋ฌธ์
- ๐ ์น์์ผ์ ์ฑํ ๋ฐ์ดํฐ์ REST API์ ์ฑํ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ๊ด๋ฆฌํ๊ธฐ
- ๐ก BE ๊ธฐ์ ์ ํ ์ด์
- โ๏ธ Node WebSocket ํ๊ณ ๋ค๊ธฐ
- โ๏ธ TypeORM Datasource mock ๋ง๋ค๊ธฐ
- โ๏ธ oauth ID range ๋ฌธ์
- ๐ custom pipe์์ Nan์ด ๋ฐ์์ง๋ ๋ฌธ์
- ๐ช nest Websocket์ ์ธ์ ์ด ์๋๋ค๊ณ ?
- ๐ด nginx websocket ์ฐ๊ฒฐ ์ ๋ฌธ์ ๋ฐ์
- ๐ WebPush ๊ตฌํ
- ๐ง ์ฐ์ ์์ ํ๋ก ์์ฒญ ์ ์ดํ๊ธฐ
- ๐ websocket์ด ๋ฆ๊ฒ ํ ๋น๋์ด ๋ฐ์๋๋ ๋ฌธ์
- ๐ฅณ typeorm์ ์ด์ฉํ FCM ์๋ฆผ ์๋น์ค
- ๐ฆ ๋ค์ค ์ ์ ๋์์ฑ ์ ์ด โ ์ฑ๊ธํค, ๋ฎคํ ์ค
- ๐ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ๊ณตํ๊ธฐ์ํ ์ ๋ต
- ๐ ๏ธ ์ธํ๋ผ ๊ธฐ์ ์คํ ์ ํ ์ด์
- ๐ Ncloud ์ค์ ๊ณผ์
- ๐ ORM ๊ธฐ์ ์คํ ๋น๊ต
- ๐ค RabbitMQ๋ก ๋ถ์ฐ ์๋ฒ์๊ฒ ๋ฉ์์ง๋ฅผ ๋ถ๋ฐฐํ๊ธฐ
- ๐ข private DB ์๋ฒ์ ์ ์ํ์ง ๋ชปํ๋ ํ์
- ๐ 1์ฃผ์ฐจ ๋ฐํ
- ๐ 2์ฃผ์ฐจ ๋ฐํ
- ๐ 3์ฃผ์ฐจ ๋ฐํ
- ๐ 4์ฃผ์ฐจ ๋ฐํ
- ๐ 5์ฃผ์ฐจ ๋ฐํ
- ๐ ์ต์ข ๋ฐํ