Today, What I learned? ์ด๋ฒ ํ๋ก์ ํธ์์๋ ๋ก๊ทธ์ธ ์ฌ๋ถ์ ๋ฐ๋ผ์ ํค๋๋ฅผ ๋ค๋ฅด๊ฒ ๋ ธ์ถํด์ผ ํ๋ ๊ธฐ๋ฅ์ด ์๋ค. ์ด ๋ถ๋ถ์ ๋ก์ง์ ์ด๋ป๊ฒ ์งค ๊ฒ์ธ ๊ฐ์ ๋ํ ์์ ๊ณ ์ฐฐ... ๊ตฌํํด์ผ ํ๋ ๋ถ๋ถ ๋ก๊ทธ์ธ์ด ๋์ด ์์ง ์๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ก๊ทธ์ธ ๋ฒํผ์ด ๋ณด์ด๋ ํค๋๋ฅผ, ๋ก๊ทธ์ธ์ด ๋์๋ค๋ฉด ๊ฒ์๊ณผ ๋ง์ดํ์ด์ง๋ก ๋ค์ด๊ฐ ์ ์๋ ์์ด์ฝ์ด ์๋ ํค๋๋ฅผ ๋ณด์ฌ์ฃผ์ด์ผ ํ๋ค. ์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ ํ๋ก์ ํธ์์๋ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ํตํด ๋ก๊ทธ์ธ์ด ์ด๋ฃจ์ด์ง๋ค. ์ฒซ ์๋ ์ฒ์์๋ useState๋ฅผ ์ด์ฉํด์ isLoggedIn ์ด๋ผ๋ boolean ๊ฐ์ ์ํ๋ก ๊ด๋ฆฌ๋ฅผ ํ๋ ค๊ณ ํ๋ค. const [isLoggedIn, setIsLoggedIn] = useState(false); ... useEffect(()=>{ authService.on..
Today, What I learned? ํ์ ์คํฌ๋ฆฝํธ๋ก ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ๋ฆฌํฉํ ๋งํ๋ ๊ฒ์ด ์๋๋ผ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๊ธ๋ก ๋จ๊ฒจ๋ณด๋ ค๊ณ ํ๋ค. ํ๋ก์ ํธ ์์ฑ CRA๋ฅผ ํตํด ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค. npx create-react-app ํ๋ก์ ํธ๋ช --template typescript ์ด ๋ --template์ ๊ผญ ๋ฃ์ด์ฃผ์ด์ผ ์ฒ์๋ถํฐ ํ์ ์คํฌ๋ฆฝํธ๋ก ํ์ผ๋ค์ด ์คํ๋๋ค. --template์์ด typescript๋ง ๋ฃ์ ๊ฒฝ์ฐ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ก CRA๊ฐ ๋์ด์ ๋ค์ ํ๋ก์ ํธ๋ฅผ ์์ฑํด์ผ ํ ์ ์๋ค. ์ ์์ ์ผ๋ก ๋ช ๋ น์ด๊ฐ ์คํ๋์๋ค๋ฉด ์ด๋ ๊ฒ ts, tsx๋ก ํ์ผ๋ค์ด ๋ง๋ค์ด์ ธ ์๊ณ , tsconfig.json๊น์ง ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ๋์ด ์์ ๊ฒ์ด๋ค. react-app-env.d.ts ? ์ผ๋ฐ์ ์ธ ๋ฆฌ์ก..
Today, What I learned? ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ตํ๋ฉด์ ์๊ฐ๋ณด๋ค ์ฝ์ง ์์์ ๋ง์ด ๋๋ผ๋ ์ค..! ํนํ ํท๊ฐ๋ฆฌ๋ ๋ช๋ช ๊ฐ๋ ์ ์ข ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. JS์ TS ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์ . ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋, ์ฆ ๋ฐํ์์ ๋ณ์์ ํ์ ์ด ๊ฒฐ์ ๋๋ค. ๋ฐ๋๋ก ํ์ ์คํฌ๋ฆฝํธ๋ ์ ์ ํ์ . ์ปดํ์ผ ํ์์ ๋ณ์์ ํ์ ์ด ๊ฒฐ์ ๋๋ค. ์ด๊ฒ์ ์ฆ ํ๋ก์ ํธ๊ฐ ์คํ๋๊ธฐ ์ ์ ๋ฏธ๋ฆฌ IDE์์ ๋ฐ์ํ ์ค๋ฅ๋ฅผ ์ ์ ์๋ค๋ ๊ฒ! any ํ์ any ํ์ ์ ๋ชจ๋ ํ์ ์ ํฌํจํ๋ ํ์ ์ด๋ค. (์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๋ณ์๋ any ํ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.) ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ๋ฅผ ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ฆฌํฉํ ๋งํ๋ ๊ฒฝ์ฐ ์์๋ก ์ฌ์ฉํ๋ฉฐ ์ ์ง์ ์ผ๋ก ํ์ ์ ์ฐจ์ฐจ ๋ฐ๊ฟ๋๊ฐ ๋ ์ ์ฉํ๋ค. ํ์ง๋ง ๋ชจ๋ ํ์ ์ ํฌํจํ๋ค๊ณ ํด์ ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ๋ฉด ํ์ ์ค..
Today What I learned? ์ด์ ์ ์ด์ด ๋ฆฌ๋์ค ํดํท ํฌ๋๋ฆฌ์คํธ๋ฅผ ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ฉฐ ํด๊ฒฐํ ๋ง์ ์ค๋ฅ๋ค์ ๊ธฐ๋กํด ๋ณธ๋ค..!! ์ด์ฐ์ด์ฐ ๋ชจ๋ ์๋ฌ๋ฅผ ํด๊ฒฐํ๊ณ ์ ์ ์๋์ด ๋๊ณ ์๋ค.. ๐ฅบ ๐ง ๋ฒํผ ์ปดํฌ๋ํธ์์ ๋ฐ์ํ ์ค๋ฅ ํด๊ฒฐ Type '' is missing the following properites from type ~~ Type '' is missing the following properites from type ~~ ์๋ง ๋ด๋ ๋ฒํผ ์ปดํฌ๋ํธ์ ๋ค๋ฅธ ํจ์ props๊ฐ ์๋ค๋ ์๊ธฐ ๊ฐ๋ค. ๊ธฐ์กด ์ฝ๋๋ ์ ํจ์๋ค ์ค ํ๋๋ง ๋ฃ์ด์ฃผ์ด ๋ฒํผ ์ปดํฌ๋ํธ๋ฅผ ๊ณตํต์ผ๋ก ์ฐ๊ณ ์๋ ์ํ์๊ธฐ ๋๋ฌธ์ ๊ผญ ๋ชจ๋ ํจ์ props๋ฅผ ๋ฐ์ ํ์๊ฐ ์์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ํ์ ์ผ๋ก ๋ค์ด๊ฐ์ผ ํ๋ ํ์ ์์ฑ์..
Today, What I learned? ์ผ์ฐจ์ ์ผ๋ก ํฌ๋๋ฆฌ์คํธ๋ฅผ redux-toolkit์ผ๋ก ๋ฆฌํฉํ ๋ง ํ ํ์ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ค์ด๊ฐ๋ฉฐ ๋ง๋๊ฒ ๋ ์ค๋ฅ๋ค์ ๊ธฐ๋กํด๋ณธ๋ค. ์๋ฌ๊ฐ ๊ผฌ๋ฆฌ์ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ ๋ฐ์ํด์ ๋ชจ๋ ์๋ฌ๊ฐ ์์ ํด๊ฒฐ๋ ๊ฒ์ ์๋๊ณ ํ์ฌ ์งํํ์ด๋ค.. ๐ ๋ด์ผ์ฏค์ ๋ค ์์ฑํ๊ธฐ ์์๊น!.. ๐ง useRef()์ focus ๊ด๋ จ ์๋ฌ Property 'focus' does not exist on type 'string' Property 'focus' does not exist on type 'string' useRef()์ ํ์ ์ด ์ ๋๋ก ์ ํด์ ธ์์ง ์์ ๋ฐ์ํ ์๋ฌ.. ์ฐพ์๋ณด๋ useRef๋ฅผ DOM ์กฐ์ ์ฉ๋๋ก ์ฌ์ฉํ๋ ค๋ฉด ์๋์ ๊ฐ์ด HTMLํ๊ทธ๋ฅผ ์ง์ ํด์ค์ผ ํ๋ค๊ณ .. ์ง์ญ๋ณ..
Today, What I learned? ๊ธฐ์กด ํ๋ก์ ํธ์ ํ์ ์คํฌ๋ฆฝํธ ๋ฆฌํฉํ ๋ง์ ์๋ํ๊ธฐ ์์, ํผ์ ํ๋ ํฌ๋๋ฆฌ์คํธ ํ๋ก์ ํธ๋ฅผ ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ฆฌํฉํ ๋ง ํด๋ณด๊ธฐ๋ก ํ๋ค. ๋จผ์ ๊ธฐ์กด ํ๋ก์ ํธ๋ ๋ฆฌ๋์ค์ ๋ผ์ฐํฐ๋ฅผ ์ด์ฉํด์ ํ์ด์ง ์ด๋๊ณผ CRUD๊ฐ ์ ์ฉ๋์ด ์๋ ํฌ๋๋ฆฌ์คํธ์๋ค. ๊ธฐ๋ณธ ๋ฆฌ๋์ค๊ฐ ์ ์ฉ๋์ด ์์๊ธฐ ๋๋ฌธ์ ๋จผ์ redux-toolkit์ผ๋ก ๋ฆฌํฉํ ๋ง ํด์ค ํ ๋ณธ๊ฒฉ์ ์ธ ํ์ ์คํฌ๋ฆฝํธ ์ ์ฉ ์์!.. ํจํค์ง ์ค์นํ๊ธฐ ๋จผ์ ํ์ ์คํฌ๋ฆฝํธ์ ๊ด๋ จ๋ ํจํค์ง๋ค์ ์ค์นํด ์ฃผ์๋ค. ํ์ ์คํฌ๋ฆฝํธ ๊ณต์๋ฌธ์์์ ๋ณด๊ณ ํจํค์ง๋ฅผ ์ค์นํ ํ์, https://www.typescriptlang.org/download How to set up TypeScript Add TypeScript to your project, or instal..
ํ๋ก์ ํธ๋ฅผ ๋ง์น๋ฉฐ ์ ๋ ํ๋ค๊ณ ๊ณ ํต์ด์๋ ์ด๋ฒ ํ๋ก์ ํธ๊ฐ ๋๋ฌ๋ค!.. ๋ค์ดํฐ๋ธ.. ๋๋ฌด๋ ํ๋ค์๋ค.. ๊ฐ์ฅ ํ๋ค์๋ ๋ถ๋ถ์ ๋ฐฐํฌ ํ ์์์น ๋ชปํ ์๋ฌ๊ฐ ์ฐ๋ฌ์ ํฐ์ก์ ๋์๋ ๊ฒ ๊ฐ๋ค ^^.. ์ฐ๋ฆฌ์ ์๋น์ค๋ ์๋ ๋ ํฌ์งํ ๋ฆฌ์ ์ ์ ๋ฆฌํด ๋์๋ค! https://github.com/yujleee/intermission GitHub - yujleee/intermission: ๊ณต์ฐ์์ ํตํฉ์ ์ฐ๋ง(KOPIS)์ OPEN API๋ฅผ ํ์ฉํ ๋ฎค์ง์ปฌ ์ ๋ณด ์ ๊ณต ๋ฐ ๋ฆฌ๋ทฐ ๊ณต์ฐ์์ ํตํฉ์ ์ฐ๋ง(KOPIS)์ OPEN API๋ฅผ ํ์ฉํ ๋ฎค์ง์ปฌ ์ ๋ณด ์ ๊ณต ๋ฐ ๋ฆฌ๋ทฐ ์ฑ. Contribute to yujleee/intermission development by creating an account on GitHub. github.com ์ด..
Today, What I learned? ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๋ฒํผ์ ํด๋ฆญํ ๋๋ง๋ค ๋ฎค์ง์ปฌ์ ์์ธ ์ค๋ช ์ด๋ฏธ์ง๊ฐ ์ ๊ณ ํผ์ณ์ง๋ ๋ถ๋ถ์ด ํ์ํ๋ค. collapsible view ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ ๋ฏํ์ง๋ง, ๊ฐ๋จํ๊ฒ ๊ตฌํํ๊ณ ์ถ์ด์ state๋ฅผ ์ด์ฉํ๋ค. ์ด ๊ณผ์ ์์ ๊ฒช์๋ ์ํ์ฐฉ์ค๋ฅผ ์ ๋ฆฌํด๋ณธ๋ค. ์ ํ, ํผ์นจ ๋ฒํผ ์ ๊ณ ํผ์ณ์ง๋ ๋ถ๋ถ์ ํ์๋ถ์ด state๋ก ์ ๊ตฌํํด ์ฃผ์ จ๋ค. const [isMoreButton, setMoreButton] = useState(false); isMoreButton์ ๋ฐ๋ผ์ ์ด๋ฏธ์ง๊ฐ ๋ค์ด๊ฐ๋ ์์ญ์ด ๋ณด์ด๊ณ ๊ฐ์ถฐ์ง๋๋ก ํ๋ค. {isMoreButton && ( )} ์ฒ์์ ์ ์์ญ์ ๋ฎค์ง์ปฌ ์ ๋ณด ์์ญ ์ปดํฌ๋ํธ ์์ ์์๋๋ฐ, ์ด๋ ๊ฒ ๋ณ๊ฒฝ๋์์ ๋ ์ด๋ฏธ์ง๊ฐ ๋ค๋ฅธ ์์ญ์ ์ด๋ฏธ์ง๊น์ง..
Today, What I learned? ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์นดํ ๊ณ ๋ฆฌ์ ๋ฐ๋ผ์ React Query์ useQuery๋ฅผ ํตํด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ถ๋ถ์ ์งํํ๋ฉฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค์๋์ง ๊ธฐ๋กํด ๋ณธ๋ค. ํผ๊ทธ๋ง ์์ผ๋ก ๋ง๋ค์ด์ผ ํ๋ ๋ถ๋ถ์ด๋ค. ๊ฐ ์ง์ญ์ ํด๋ฆญํ๋ฉด ํด๋น ์ง์ญ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ผ ํ๋ ๋ถ๋ถ! ์ผ๋จ ๋ฒํผ์ ํด๋ฆญํ ๋๋ง๋ค ๊ฐ ์ง์ญ์ ์ฝ๋๋ฅผ API์ params ๊ฐ์ผ๋ก ๋๊ฒจ์ฃผ์ด์ผ ํ๋ค. ๊ทธ๋์ API ํจ์์์๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก params๋ฅผ ๋ฐ์์ค๊ธฐ๋ก ํ๋ค. export const getLocalPopular = (params) => { const [_, category] = params.queryKey; return fetch( `${BASE_URL}/boxoffice?servic..
์ด๋ค ์๋ฌ? ํ๋ซ๋ฆฌ์คํธ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๋ ค๋ค ๋ณด๋ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ERROR A VirtualizedList contains a cell which itself contains more than one VirtualizedList of the same orientation as the parent list. You must pass a unique listKey prop to each sibling list. ํ๋ซ๋ฆฌ์คํธ๊ฐ ์ค์ฒฉ๋์ง ์๊ณ ์ฌ๋ฌ๋ฒ ์ฐ์ผ ๋ ๋ชจ๋ ํ์ ๋ฆฌ์คํธ์๊ฒ ํค๊ฐ์ด ํ์ํ ๊ฒ ๊ฐ์๋ค. ์ฌ์ค ์๋ฌ์์ ๋ต์ ์ฃผ๊ณ ์์์ง๋ง listKey๊ฐ keyExtractor์ ์ฐ๊ด์ด ์๋์ค ์๊ณ ๋ง์ ์ฝ์ง์ ํ๋ค (...) key๊ฐ ์ ๋ํฌํ ๊ฐ์ด ์๋์ด์ ๊ทธ๋ฐ๊ฐ? ์ถ์ด์ ์ด๋ฐ ์ฝ์ง๋ค์ ํ์๋ค. ..
Comment