์ด๋ฏธ์ง ์ด์ Using `` could result in slower LCP and higher bandwidth. Consider using `` from `next/image` to automatically optimize images. ์ธ๋ถ url์์ ๋ฐ์์ค๋ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ๋ next/Image๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ๊ณ ๋ คํ๋ผ๊ณ ํ๋ค. ๋ฐ๋ฉด์ ์ธ๋ถ์์ ๋ฐ์์ค๋ ์ด๋ฏธ์ง๊ฐ ์๋ ์๋ฒ ์์ฒด, ์ฆ ํ๋ก์ ํธ assets์ ์๋ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ๋ Image๋ฅผ ์ ์ด์ฃผ์ง ์์ผ๋ฉด ๋ณด์ด์ง๊ฐ ์์๋ค. ์๋ฒ ๋ด์ ์กด์ฌํ๋ ์ด๋ฏธ์ง๋ Image ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด์ผ ์ด๋ฏธ์ง๊ฐ ์ ๋๋ก ๋จ์ง๋ง next.config.js ์ค์ ์ ๋ณ๋๋ก ํด์ฃผ์ง ์์๊ธฐ์ link[imageSource] ๋ถ๋ถ ๋๋ฌธ์ Image ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ ..
ํ๊ณ ์์ฑ ์ด์ ์๊ฐ์ด ๋ฉ์ธ์ง๊ฐ ์๋ค ๊ทธ๋์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค ๋๋ ๋ฌด์์ ์ํ๋๊ฐ? ํํธ2 ํ์ ์ค์ ์ด์ ์ด ์ข๊ณ ์ดํด๋ ฅ๋ ์ข์ผ์ ๋ถ์ด ์์๋ค. ํ์ง๋ง ์๋ฌด๋๋ ๊ทธ ๋ถ์ ์ฝ๋ฉ์ ์์ํ์ง ์ผ๋ง ์ ๋์๋ค ๋ณด๋ ๋์์ด ํ์ํ์๊ณ ๋์์ ์์ฒญ ๋ฐ์์๋ ์ ์๋ ค๋๋ฆฌ๊ณ ์ถ์๋ค. ๋ด๊ฐ ์ค๋ช
์ ์ํ๋ ค๊ณ ๋
ธ๋ ฅํ๊ธฐ๋ ํ์ง๋ง ๊ทธ๋ถ์ ์ดํด๋ ฅ์ด ์ข์ผ์
จ๋ค. ๊ทธ๋ถ์ด ํท๊ฐ๋ คํ์๋ ๊ฑธ ๋์์ ๋๋ฆฌ๋ฉด ์ดํดํ์๊ณ ์ข์ํ๋ ๋ชจ์ต์ ๋ณผ๋ ์ ๋ง ๋ฟ๋ฏํ๋ค. ๋๋ถ์ ์ค๋ช
ํ๋ ๋ฅ๋ ฅ๋ ์กฐ๊ธ์ ๋์์ง ๊ฒ ๊ฐ๊ณ , ์ด๋ฐ ์ผ์ ํ๋ค๋ ๊ฑฐ ์์ฒด๊ฐ ํ์ ๋์์ด ๋์๋ค๊ณ ์๊ฐํ๋ค. ๋๋ ์ด๋ค ๋ฌธ์ ๋ฅผ ๊ฒช์๋์ง, ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ๋๋ ๋ ๋ง๊ฐ์ด ์์ฝ๋ค. ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ์ด๋ฅผ ๋นจ๋ฆฌ ๋ง๋ค๊ณ ์ถ์ ๋๋จธ์ง ์ฝ๋ ํ์ง์ด ๋๋ฌด ์ ์ข์์ก๊ณ , ๊ทธ ์ดํ์..
๊ธฐ๋ฅ ์๊ตฌ์ฌํญ IntersectionObserver๋ ๊ฒ์ ์ฒ์ ์๊ฒ ๋์๋ค. ๋ฌดํ ์คํฌ๋กค์ ๊ตฌํํ ๋ ์คํฌ๋กค ์ด๋ฒคํธ ๋ณด๋ค๋ ์ฑ๋ฅ์์ ์ด์ ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฌดํ ์คํฌ๋กค์ ๊ตฌํํ ๋ ๋ง์ด๋ค ์ฐ๋ ๊ธฐ์ ์ธ ๊ฒ ๊ฐ๋ค. ์ ํ์ด์ง๋ฅผ ์คํฌ๋กค ํ ๋ ๋งํฌ ์ถ๊ฐํ๊ธฐ ๋ถ๋ถ์ด ๋ณด์ด์ง ์์๋ ์ด๋ฅผ ์ตํ๋จ์ ๊ณ ์ ์ํค๋ผ๋ ์๊ตฌ ์ฌํญ์ด์๋ค. ๋ ์์ฒ๋ผ footer๊ฐ ๋ณด์ธ๋ค๋ฉด ์ด๋ฅผ ๋ณด์ด๊ฒ ํ๋ฉด ์๋์๋ค. ์ฒ์ ์์ฑํ ์ฝ๋ useEffect(() => { const observer = new IntersectionObserver( (entries, observer) => { entries.forEach((entry) => { if (entry.target.id === "mainEntry") { if (!entry.isIntersect..
์ง๊ธ๊น์ง์ ๋๋ ์๋ฌด ์๊ฐ์์ด ์ฝ๋ฉ์ ํด์๋ค. ์ด์ ๊ป ๋๋ ์๋ฌด ์๊ฐ์์ด ์ฝ๋ฉ์ ํด์๋ค. ๋ณต์กํ๊ฒ ์ฝ๋ฉํ๋ ๊ฑธ ์ซ์ดํด์ ์ต๋ํ ๋ด๊ฐ ๋ณด๊ธฐ์ ์ง๊ด์ ์ผ๋ก ์ฝ๋ฉ์ ํ ๋ค์์ ๋ฆฌํฉํ ๋ง์ ์ ๋ง ๊ฐ๋ ์ค๋ฒ๋ ธ๋ค. ํ์ง๋ง ์ด๋ฌํ ์ต๊ด ํ์ ์์ฆ์ ์ฑ์ฅํ๋ ๋๋์ด ๋ค์ง ์์๋ ๊ฒ ๊ฐ๋ค. ์ค๋ ์ฝ๋์ ํํธ3 ๋ฉํ ๋ง ์๊ฐ์ ๋ค๋ฅธ ๋ถ๋ค์ ์์ ๋ค์ด ์ฝ๋๋ฅผ ์งค ๋ ๊ฒช์๋ ๊ฒฝํ์ ๋งํ์ง๋ง ๋๋ "์ต๋ํ ๋จ์ํ๊ฒ ์ฝ๋๋ฅผ ์ง๊ณ ๋ฆฌํฉํ ๋ง๋ ํ์ง ์์ ์ด๋ฅผ ๊ณ ์ณ์ผ ํ๋ค" ๋ผ๋ ๋ง ๋ฟ์ด์๋ค. ์ฌ์ค ์ด์ ๊น์ง๋ ๊ฐ์ ๋ฃ๊ธฐ์๋ง ์ง์คํ์ฌ ๋ญ๊ฐ๋ฅผ ๋ง๋ค์ด ๋ณธ ๊ฒฝํ์ด ์ ๋ง ์ ๋ฌดํ๋ค ๊ทธ๋์ ์ฝ๋๋ฅผ ๋ง์ด ์ง๋ณด์ง ์์๋ค.. ์์งํ! (๊ทธ๋์ ์ด๋ฐ ๊ณ ๋ฏผ์ ํ๋๊ฒ ๋น์ฐํ๋ค๊ณ ์๊ฐํ๋ค) ์์ผ๋ก๋ *๋ง์ด* ๋ง๋ค๊ณ ๋ค๋ฅธ ์ข์ ์ฝ๋๋ฅผ *๋ง์ด* ์ฐธ๊ณ ํ์ ์ด์ ๋ ๋จ์ ๊ตฌ..
์ฌ๊ฑด์ ๋ฐ๋จ ์์ ๋กค๋งํ์ดํผ์ ์๋ ์ ๋ฉ์์ง๋ค์ ์ญ์ ๋ฅผ ํด์ผ ํ๋ค. ํด์งํต ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ฒ์ delete ๋ฆฌํ์คํธ๊ฐ ๋ณด๋ด์ง๊ณ ๊ทธ ์ดํ์๋ ๋กค๋งํ์ดํผ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ์ํจ๋ค. ์๊ฐ ๋ฐ๋ก ๋กค๋งํ์ดํผ ํ์ด์ง์ด๋ค. ํ์ง๋ง ์ญ์ ๋ฅผ ํ๊ณ ์ด ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ์ํค๋ ์ญ์ ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ์๋์ง ์๊ณ ๊ทธ๋๋ก ๋จ์์๋ ๊ฒ์ด๋ค. ์๋ง๋ react-router์ navigate๋ก ๋ฆฌ๋ค์ด๋ ํธ์ url์ ๋ค๋ฅด์ง๋ง ๊ฐ์ paper ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํด์ (์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ๋ง์ ์ด์ฉ ์ ์์์) useEffect๊ฐ ๋์์ ์ํ๋ ๊ฒ ๊ฐ๋ค. ์ ์ด๋ ๊ฒ ์๊ฐํ๋๋ฉด ๋ค๋ฅธ ํ์์ด postํ์ด์ง์์ ๋กค๋งํ์ดํผ๋ฅผ ์์ฑ์ ํ๊ณ ๋กค๋งํ์ดํผ ํ์ด์ง์ ๋ฆฌ๋ค์ด๋ ํธ ๋ ๋๋ useEffect๊ฐ ์คํ๋์๋ค. ๊ฐ๋จํ์ง๋ง ๋ณ๋ก์ธ ๋ฐฉ๋ฒ 1 ๋ฉ์ธ์ง ์ญ..
์๋ ์คํ๋ฆฐํธ 1๊ธฐ ํ์๋ค์ ํ๋ก์ ํธ๋ฅผ ๋ณด๋ค๊ฐ ๋ฐ๊ฒฌํ ์ฝ๋์ธ๋ฐ ์ฐ๋ฆฌ ํ์ด ์งํ์ค์ธ ๋ฐฉ์๋ณด๋ค ๋ ๋ง์ ๋ค์๋ค. ์คํ์ผ๋ ์ปดํฌ๋ํธ๋ ์์ S๋ฅผ ๋ถ์ฌ์ฃผ๋ ๊ฒ ์ข์๋ค ์ปดํฌ๋ํธ๋ ์คํ์ผ๋ ์ปดํฌ๋ํธ๊ฐ ๊ตฌ๋ถ์ด ์๋์๋๋ฐ ์ด๊ฒ์ ํ์ฉํ๋ฉด ๋๋ฌด ์ข์ ๊ฒ์ด๋ค. ์๋ ์ ์ด๊ฑธ ์๊ฐ์ ๋ชปํ์๊น... ๊ทธ๋ฆฌ๊ณ ์คํ์ผ๋ ์ปดํฌ๋ํธ์ prop์ ๋๊ฒจ์ค๋ $๋ฅผ ๋ถ์ด๋ ๊ฒ๋ ๊น๋จน์ด์ ์ฝ์์ฐฝ์ ์๋ฌ๋ฅผ ๋ด์ผ ํ๋ค.... ์ด๋ฐ ๋ถ๋ถ๋ ์ ๊ฒฝ์ฐ๋ฉด ์ข์ ๊ฒ์ด๋ค. ์ด์ 1์ฃผ์ผ ๋์ ๋ฆฌํฉํ ๋ง์ ์งํํ๋ ์ด ๋ถ๋ถ์ ํ์๋ค์๊ฒ ๋งํด์ค์ผ ๊ฒ ๋ค. ๋ฆฌํฉํ ๋งํ ๋ถ๋ถ์ ์๋์ ๊ฐ๋ค. 1. ์ปดํฌ๋ํธ ๋ณ๋ก ํ์ผ ํ์์ด ๋๋ฌด ํต์ผ์ด ์๋์ด ์๋ค. -> ์์) ์ด๋ค ์ปดํฌ๋ํธ๋ index.js๊ฐ ์๊ณ ์ด๋ค ์ปดํฌ๋ํธ๋ ์๋ค. ์ปดํฌ๋ํธ๊ฐ ์ด๋ฆ ์ค๋ณต์ด ์๋๋ฐ ํด๋ ๊ตฌ์กฐ๊ฐ ์ด๋ค์..
ํ๋ก์ ํธ ์งํ์ค์ popOver๋ฅผ ๋ง๋ค์๋๋ฐ absolute๋ฅผ ์ฃผ์์์๋ ๋ถ๊ตฌํ๊ณ popOver๊ฐ ๋ํ๋ ๋ ๋ ์ด์์์ด ๊นจ์ง๋ ๋ฌธ์ ๊ฐ ์์๋ค. ๊ฐ๋ฐ์๋๊ตฌ๋ก ์คํ์ผ์ ๋ณด์๋ ์๋ฌด๋ฐ ๋ณํ๊ฐ ์๋๋ฐ ์ ๋ ์ด์์์ด ๋ฐ๋ ค๋๋ ๊ฑธ๊น? ์ด ๋ฌธ์ ๋ ๊ฒ์ํ๊ธฐ์๋ ์ด๋ค ํค์๋๋ก ํด์ผํ ์ง ์ ๋งคํ๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ด๊ฒ์ ๊ฒ ๋ง์ ธ๋ณด๋ฉฐ ํด๊ฒฐํ๋ค Relative ๋ ์์: Contents์ ์ง๊ณ์์์ผ๋ก Popover๋ฅผ ๋ฃ์๋๋ ํด๊ฒฐ๋๋ค!
์ ์ด๋ฐ ๊ธ์ ์ ๋์? ๊ฐ๋ฐ ๋์๋ฆฌ ์ด์์ง์ผ๋ก ์ฐธ์ฌํ๊ฒ ๋๋๋ฐ ์์ ํฌ๋๋ฉ์ดํธ๋ฅผ ํด๋ก ์ ํด์ผ ํ๋ค. ๋ด๊ฐ ์ด๊ฑธ ์ด๋์ ๋ ํด๋ก ํ๋ฉด์ ์ด๋ ค์ ๋ ์ ์ ์ ๊ณ ์ ํ๋ค. ์ด๋ฐ๊ฒ ์ด๋ ค์ ์ ์ด๋ฏธ ๋ง๋ค์ด์ง ์ ๊ณต๋ฐ์ API๋ฅผ ํ์ฉํ์ฌ ์ด ์ฑ์ ๋ง๋ค์ด์ผ ํ๋๋ฐ ์ ์ญ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์
ํ ์ ๋ฐ์ ์์๊ณ (todos๋ฐ์ดํฐ ๋๋ฌธ), ๋ฐฑ์๋์์ ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ์ด ์ข ์ ํ์ ์ด์๋ค (ํน์ ๋ชฉํ์ ํด๋นํ๋ ํฌ๋๋ฆฌ์คํธ ์ป์ด์ฌ ๋ฐฉ๋ฒ์ด ์์์). ๊ทผ๋ฐ ๊ทธ๋ ๋ค๊ณ ๋ฐฑ์๋ ํํ
์ด ๊ธฐ๋ฅ์ ๋ง๋ค์ด ๋ฌ๋ผ๊ณ ํ๋ ๊ฒ๋ ๋ณ๋ก์ธ๊ฒ ๋์ค์ ๋ชฉํ๊ฐ 100๊ฐ ์ ๋ ๋๋ค๋ฉด 100๊ฐ์ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ด๊ฒ ๋๋ค.. ๊ทธ๋์ ์ต๋ํ ๋ฐ์์จ todoList๋ฅผ UI์ ํ์๋๋ก ๋ฐ๊พธ์๋ค. recoil์ selector๋ฅผ ์ ๊ทน ํ์ฉํ๋ค. react-query ์ฌ์ฉ์ ์ข ..