Today, What I learned? ๋ด ํํธ๋ ์๋์์ง๋ง ๊ธํ๊ฒ ์ข์์ ๊ด๋ จ ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ฒ ๋์๋ค. ๋ด๋นํ์ง ์์๋ ํํธ๋ผ ์ฝ๋๋ฅผ ๋ค์ฌ๋ค๋ณผ ์ผ์ด ๋ง์ง ์์๋๋ฐ ์คํ๋ ค ์ข์!.. ์ด๋ฒ ๋ฒ๊ทธ๋ ์๋ก๊ณ ์นจ ํ์ ๋ ํํธ๊ฐ ์ ์ง๋์ง ์๋ ๋ฒ๊ทธ์๋ค. ๋ถ๋ช ์ด์ ์๋ ๋์๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ๋ฐ ๊ทธ ์ฌ์ด ์์ ์ด ๋๋ฉด์ ๋ญ๊ฐ ๋ฒ๊ทธ๊ฐ ์๊ธด ๋ฏ.. ๐ค ์์ธ ํ์ myProjects ์ปฌ๋ ์ ์ ํ์ฌ ํ๋ก์ ํธ id ๊ฐ์ด ํ์ธ๋์ด์ผ๋ง ํํธ๋ฅผ ์ฑ์ฐ๋ isLike๊ฐ ํ๋จ๋ ์ ์๋๋ฐ, ์๋ก๊ณ ์นจ ํ์ ๋ useQuery์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ์๊ฐ์ด ์์ด์ ์ฒ์์ undefined๋ก ๊ฐ์ด ๋ค์ด๊ฐ ๋ฒ๋ฆฌ๋ ๊ฒ ๋ฌธ์ ์ธ ๋ฏํ๋ค. ๊ทธ๋์ ์๋ก๊ณ ์นจํ๊ณ ํํธ๊ฐ ํ๋ฆฌ๋๊น ๋ค์ ๋๋ฅด๋ฉด ์ซ์๊ฐ 1์ฉ ๋์ด๋๋.. ์ด์ํ ๋ฒ๊ทธ.. ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด true๋ก m..
Today, What I learned? ์ ์ ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ, ๊ธฐ์กด์ ๊ณต์ ๊ธฐ๋ฅ์์ ์นด์นด์คํก ๊ณต์ ๋ฅผ ์ถ๊ฐํ๊ธฐ๋ก ํ๋ค. (์๋ฌด๋๋ ๋ง์ด ์ฐ์ด๋๊น) ์ด์ ํ๋ก์ ํธ์๋ ๊ตฌํ๋์ด ์๋ ๋ถ๋ถ์ด๋ผ (๋ด๋นํ์ง ์์) ๊ฝค ๋ง์ ์ฐธ๊ณ ๋ฅผ ํ์์๋?.. ์กฐ๊ธ ๋ค๋ฅด๊ฒ ์ ์ฉํ๋ ค๋ค ๋ณด๋ ์ค๋ฅ๊ฐ ์ข ๋ฐ์ํด์ ๊ธฐ๋ก.. ์ฌ์ ์์ ์ผ๋จ ์นด์นด์ค ๋๋ฒจ๋กญ์ค์์ ์ฑ ๋ฑ๋ก๊ณผ ํ๋ซํผ์ ๋๋ฉ์ธ ๋ฑ๋ก์ด ํ์ํ๋ค. ์ฑ์ ๋ฑ๋กํ๋ฉด ์ฑ ํค๋ฅผ ํ์ธํ ์ ์๊ณ , ์ฌ๊ธฐ์ ํ์ํ ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ํค๊ฐ. env ํ์ผ์ ์ถ๊ฐํด ์ฃผ์! ๋ ํ๋ซํผ์์ Web์ ๋๋ฉ์ธ์ ์ถ๊ฐํด ์ค๋ค. ๋๋ ๋ฐฐํฌ์ฃผ์๋ ๋ก์ปฌํธ์คํธ๋ฅผ ์ถ๊ฐํด ์ฃผ์๋ค. ์ถ๊ฐ์ ์ผ๋ก PR์ vercel ํ๋ฆฌ๋ทฐ์์ ํ์ธํ๊ณ ์ถ๋ค๋ฉด ํ๋ฆฌ๋ทฐ ์ฃผ์๋ฅผ ์ถ๊ฐํด์ค์ผ ํ๋ค. index.html index.html์ ํค๋ ..
Today, What I learned? ์ฃผ๋ง์ฏค์ ๋์์ธ ์์ ์ฌํญ์ ๋ฐ์ํ๋ ์ถ๊ฐ ๊ธฐ๋ฅ์ธ ์ธํ ํ๊ทธ ํด๋ฆฌ์ด ๋ฒํผ์ด ์ ๋๋ก ๋์ํ์ง ์๋ ์ด์.. ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๋ค๊ฐ ์ ์ด ์ปดํฌ๋ํธ์ ๋น์ ์ด ์ปดํฌ๋ํธ์ ๋ํด์๋ ์ฐพ๊ฒ ๋์ด์ ํ ๋ฒ ์ ๋ฆฌํด ๋ณธ๋ค. ์์ธ ํ์ ์ผ๋จ ์ฒ์์ ๋์์ด ์ ๋๋๋ฐ, ํ ๋ฒ ์ง์ฐ๊ณ ๋ ๋ค๋ถํฐ ์ ๋๋ก ๋์์ด ๋์ง ์์๋ค. ๊ทธ๋์ ๋ก๊ทธ๋ฅผ ์ฐ์ด๋ณด๋.. state๋ ๋ณ๊ฒฝ์ด ์ ๋์์ง๋ง input์ฐฝ์ ๋น์ด๋ฒ๋ฆฐ ๊ฐ์ด ๋ค์ ๋ฐ์์ด ์ ๋๊ณ ์๋ ์ํ.. input ํ๊ทธ์ state์ ๊ฐ์ด ์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์์ด ๋์ง ์๊ณ ์๋ค๋ ๊ฒ์ ํ์ธํ๋ค. ์์ธ์ ๋ฐ๋ก defaultValue !.. ๋ง์ดํ์ด์ง๋ ๋์ฒด๋ก ์์ ํ๋ ์์ญ์ด๊ธฐ ๋๋ฌธ์ ๋ฌด์์์ ์ผ๋ก value ๋์ defaultValue๋ฅผ ์ถ๊ฐํ๋ ๊ฒ ๊ฐ๋ค. (๊ธฐ..
Today, What I learned? ์ง๊ธ ํ๋ก์ ํธ์์ ์ฌ์ฉ๋๊ณ ์๋ ๋ฆฌ์กํธ ์ฟผ๋ฆฌ์ staleTime๊ณผ CacheTime, invalidateQueries์ ๋ํ ๊ฐ๋ ์ด ์ ๋ฆฝ๋์ด ์์ง ์์ ๊ฒ ๊ฐ์์ ํ๋ฒ ์ ๋ฆฌํ๋ฉด์ ๊ณต์๋ฌธ์๋ ์ฝ์ด๋ณด๊ณ .. ๋ฏธ๋์ ๋๋ฅผ ์ํ ๊ธฐ๋ก!.. ๊ณต์ ๋ฌธ์ ๋งํฌ๋ ์ด์ชฝ์ด๋ค. https://tanstack.com/query/latest/docs/react/overview Overview | TanStack Query Docs TanStack Query (FKA React Query) is often described as the missing data-fetching library for web applications, but in more technical terms, it ma..
Today, What I learned? ์ฌ์ค์ ๋ผ๋์ค๋ผ๋ ์ฝ์์ ๋ผ๋์ค๋ฒํผ์ ํด๋นํ๋ ๊ฒฝ๋ ฅ ๋ถ๋ถ ์ปดํฌ๋ํธ์ ๋ค์ด๊ฐ ์์์๋ ๋ถ๊ตฌํ๊ณ , ์ ์ฒด์ ์ผ๋ก ๋ ๋๋ง์ด ๋๋ ๊ฒ์ ์ ์ ์์๋ค. ๋ถ๋ชจ์ปดํฌ๋ํธ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋์๊ธฐ ๋๋ฌธ์!... ์ด๋ฐ ์ธ๋ฐ์๋ ๋ ๋๋ง ํ์๋ฅผ ์ค์ด๊ณ ์, React.memo๋ฅผ ์ ์ฉํ๊ธฐ๋ก ํ๋ค. UserTopInfo -> ์ฒดํฌ ์์ญ์ ๊ฐ์ธ๋ ์ปดํฌ๋ํธ -> ์ฒดํฌ๋ฐ์ค/๋ผ๋์ค ๋ฒํผ ์ปดํฌ๋ํธ ํํ๋ก ๊ตฌ์ฑ์ด ๋์ด์์ด์, ํด๋ฆญ์ ์ฃผ์ฒด๊ฐ ๋๋ ๊ฐ์ฅ ๋ด๋ถ ์ปดํฌ๋ํธ์ธ ์ฒดํฌ๋ฐ์ค์ ๋ผ๋์ค ๋ฒํผ ์ปดํฌ๋ํธ์ memo๋ฅผ ์ ์ฉํ๋ค. ๋ ๋ค userTopInfo์์ ์ ์ญ ์ํ์ธ userInfo๋ผ๋ props๋ฅผ ๊ณตํต์ ์ผ๋ก ๋ฐ๊ณ ์๋ค. (์ ์ ๊ฐ ์์ ํ ์ ๋ณด์ ๋ํ ๋ถ๋ถ!) profiler ์ ๋ณด ์์ ๊ณผ ๊ด๋ จ๋ UserInfoT..
์ด๋ค ์๋ฌ? ํ๋กํ ์ด๋ฏธ์ง๊ฐ ์ฌ์ฉ๋๋ ์ด๋ ๊ณณ์ด๋ ๋ํ๋๋ ์ด 403 ์๋ฌ.. ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ์ ๋๋ก ๋ชป๊ฐ์ ธ์์ ๊ทธ๋ฐ ๋ฏ ๋ณด์๋ค. ๊ทธ๋์ ํ๋กํ ์ด๋ฏธ์ง๊ฐ ๋น๋ฒํ๊ฒ ์ ๋๋ก ๋จ์ง ์์๋ค. ์ด๋ ๊ฒ ๋น์ด์๋ ์ด๋ฏธ์ง๋ฅผ ํ์ธํด๋ณด๋ฉด src๊ฐ ๋น์ด์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์์ธ ํ์ ์ด ๋ฌธ์ ๋ ๊ตฌ๊ธ๋ก ๋ก๊ทธ์ธํ ๊ณ์ ์๋ง ๋ํ๋๋ ํ์.. 403 ์๋ฌ๋ ์๋ฒ์ ์์ฒญ์ ํ์ง๋ง ๊ถํ์์ ๋ฌธ์ ๋ก ๊ฑฐ์ ๋์๋ค๋ ์๋ฌ๋ผ๋๋ฐ, ๋ณดํต ๋ค๋ฅธ ๋๋ฉ์ธ์์ ํธ์ถํ ๋ ๋ฐ์ํ๋ค๊ณ ํ๋ค. ๋ค๋ฅธ ๋๋ฉ์ธ์์ ์จ ์์ฒญ์์ ํ์ธํ๊ณ ๊ฑฐ์ ํ๋จ ๊ฒ์ด๋ค. ํด๊ฒฐ ๊ณผ์ https://stackoverflow.com/questions/56242788/http-403-on-images-loaded-from-googleusercontent-com HTTP 403 on ..
Today, What I learned? ๋ง์ดํ์ด์ง์ UI๊ฐ ๊ฝค.. ๋ณ๊ฒฝ์ด ๋์๋ค. ๊ธฐ์กด๊ณผ ๋ค๋ฅด๊ฒ ๊ธฐ์ ์คํ๋ณ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํด์ผ ํ๋๋ฐ, ์ผ์ผ์ด import ํด์ฌ ์๋ ์์ผ๋.. ๋์ ์ผ๋ก ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ฐพ์๋ณด๊ฒ ๋์๋ค. ์์ค๋ฐ์ค๋ฅผ ๋ณด๊ณ ํ์๋ถ์ด require๋ผ๋ ํํธ๋ฅผ ์ฃผ์ จ๋ค. ๊ธฐ์กด ์ํ ๊ฐ๊ฐ ๊ธฐ์ ์คํ์ ํด๋นํ๋ ์์ด์ฝ ์ด๋ฏธ์ง ์ ์ฉ์ ์ํด ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค. ํ์ง๋ง ๋ชจ์กฐ๋ฆฌ ์๋ฐ ใ ... require() ์ ์ฉ require๋ฅผ ์๋์ ๊ฐ์ด ์ ์ฉํด๋ณด์์ ๋, ์ด๋ฏธ์ง๊ฐ ์ ๋จ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ๋ธ๋ก๊ทธ๋ค์ ๋ณด๋ค๋ณด๋ .default๋ฅผ ๋ถ์ฌ์ผ ์๋ฐ์ด ์ ๋จ๋ ๊ฒฝ์ฐ๊ฐ ๋ ์๋๋ฐ, ๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ์คํ๋ ค ๋ถ์ด๋๊น ์๋ฐ์ด ๋ด๋ค. ์ผ์ด์ค ๋ฐ์ด ์ผ์ด์ค์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง? require๋ง ..
Today, What I learned? ๋ผ์ดํธํ์ฐ์ค์ ์งํ๋ฅผ ๋ณด๊ณ ํ๋กํ ์ด๋ฏธ์ง์ ํ์ฅ์๋ฅผ webp๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค๊ณ ํ๋จ๋์ด์.. ๋ค๋ฅธ ์ด๋ฏธ์ง ํ์ฅ์๋ฅผ ๋ฐ๊พธ๋ ๊ณผ์ ์์ ํ๋กํ ์ด๋ฏธ์ง ํ์ฅ์๋ ํ๋ฉด๊ณต์ ๋ฅผ ํตํด ํ์ ๋ถ์ด ๋ณ๊ฒฝํด ์ฃผ์ จ์ง๋ง, ๊ทธ ๊ณผ์ ์์ ๋ด๊ฐ ๋ ์ค์ํ(!) ์ฝ๋๊ฐ ์์ด์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค ^^ใ ์ฐ์ ํ์ฌ ๋ผ์ดํธ ํ์ฐ์ค๋ ์ด๋ ๋ค. ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ฆ ์ฐ๋ฆฌ ํ๋ก์ ํธ์์๋ ์ด๋ฏธ์ง ์ฌ์ด์ฆ ์ต์ ํ๋ฅผ ์ํด react-image-file-resizer ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๊ณ ์๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์ฅ์๋ฅผ jpg, png ๋ฟ๋ง ์๋๋ผ webp๋ ํจ๊ป ์ ๊ณตํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ๋์ด ์๋ ๋ฆฌ์ฌ์ด์ฆ ํฌ๋งท์ ์๋์ ๊ฐ๋ค. const resizeFile = (file: File) => new Promi..
Today, What I learned? ํ๋ก ํธ์์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ด๋ป๊ฒ ํ ์ ์์ ๊ฒ์ธ๊ฐ?๋ฅผ ์์ ๊ณ ๋ฏผํ๊ณ ์ฐพ์๋ณด๊ณ , ์ฌ๋ฌ ๊ธ๋ค์ ์ฝ์ด๋ณด๊ณ ์๋ค. ๊ทธ ๋ฐฉ๋ฒ ์ค ํ๋์ธ ๋ถํ์ํ ๋ ๋๋ง ์ค์ด๊ธฐ!.. ๋ ๋๋ง์ ์ค์ด๋ ๋ฐฉ๋ฒ ์ค ํ๋์ธ memoization์ ๋ํด ์ ๋ฆฌํด ๋ณธ๋ค. memoization memoization์ ๋ฆฌ์กํธ์๋ง ํด๋น๋๋ ๊ธฐ์ ์ ์๋๋ค. ์ปดํจํฐ๊ฐ ๋์ผํ ๊ณ์ฐ ์์ ์ ๋ฐ๋ณตํด์ผ ํ ๋, ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด ๋๊ณ ์ฌ์ฉํ์ฌ ์๋๋ฅผ ๋์ด๋ ๊ธฐ์ ์ด๋ค. ์ฝ๊ฒ ๋งํด์ ๋ฐ๋ณต ์์ ํด์ผ ํ ๋ถ๋ถ์ ๋ฉ๋ชจ๋ฅผ ํด๋๊ณ ๊ฐ์ ธ๋ค ์ฐ๋ ๋๋? ๋ณดํต ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํ๋ฅผ ์ํด์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๋ฆฌ์กํธ์์์ memoization ๋ฐฉ๋ฒ์ ํฌ๊ฒ ์ธ ๊ฐ์ง. React.memo, useMemo, useCallba..
Today, What I learned? ์์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค๊ฐ null๊ฐ์ด ํฌํจ๋์ด์ ์๋ ๋๋ ๊ธฐ๋ฅ์ด ์ ๋๋(!) ์ผ์ด ๋ฐ์ํ๋ค. ๋ฐ๊ฒฌํ์ ๋ถ์ด ๋ฐ๋ก ํด๊ฒฐํด ์ฃผ์ จ์ง๋ง, ๋ง์นจ ๊ทธ ๋ถ๋ถ์ด useEffect๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ถ์ด๊ณ .. ๋ด๊ฐ useEffect์ ์คํ ์์ ์ ๋ํด์ ์๋ชป ์๊ณ ์์๋ ๊ฒ ๊ฐ์ ์ ๋ฆฌํ๋ค! useEffect์ ์คํ ์์ ๋๋ ๊ธฐ์กด์ useEffect๊ฐ ์ ์ผ ๋จผ์ ์คํ๋๋ค๊ณ ์๊ฐํ์๋๋ฐ, (์ ํํ ์์๋์ง๋?..๐ค) useEffect ๊ฐ์ ์ฌ์ด๋ ์ดํํธ๋ jsx๊ฐ ๋ค์ด์๋ return๋ฌธ์ด ๋๋๊ณ ์คํ๋๋ค. ์๋์ ๊ฐ์ด ์ฝ์์ ์ถ๊ฐํด์ ํ์ธํด๋ณด๋ ๋ค์ ์๊ฒ ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋๋ return๋ฌธ์ด ๋จผ์ ์คํ๋๊ณ useEffect์ ์ฝ์์ด ์ฐํ๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค. co..
Comment