์๋ฌ ๋ฐ์react-router-dom๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋์ playwright ํ ์คํธ ์ค ์๋์ ๊ฐ์ด useNavigate ๊ด๋ จ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋จ์ ํด๊ฒฐuseNavigate๋ react-router-dom ์ ํ ์ผ๋ก ์์นญํด๋ณด๋ MemoryRouter ๋ก ๊ฐ์ธ์ฃผ๋ฉด ๋๋ค๊ณ ํฉ๋๋ค. const component = await mount( , { hooksConfig } ); ์ด๋ ๊ฒ mount ์์ ๋จ์ํ ๊ฐ์ธ๋ ์์ผ๋ก ํด๊ฒฐํ ์๋ ์๊ฒ ์ง๋ง, ์ด ๋ถ๋ถ์ ๊ณตํตํ ํ ์ ์์ต๋๋ค. ๊ณตํตํ ์๋ 1import { MemoryRouter } from 'react-router-dom';import { AuthContext } from '@contexts';export const TE..
vite ํ๋ก์ ํธ์์ playwright ๋ฅผ ์ค์ ํ์ ๋, typecheck ๋ฅผ ๋๋ฆฌ๋ฉด spec.tsx ์์ ํ์ ๊ด๋ จ ์๋ฌ๊ฐ ๋๋ค. ์ด ๋๋ `@playwright/test` ํจํค์ง๋ฅผ ์ค์นํด์ tsconfig์ compilerOptions.types ํ๋์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.{ "compilerOptions": { "types": ["node", "vite/client", "jest", "@testing-library/jest-dom", "@playwright/test"], }}
๋ฌธ์ branchA ์ revert commit ์ด ํฌํจ๋์ด ์๊ณ main ์๋ ์์ ๋, branchA ์์ `git merge main` ์ ์ํํ๋ฉด main ๋ธ๋์น์ ์ํ์ ๋์ผํ๊ฒ revert commit ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ฌด์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. merge recursive ์ ๋ตgit ์์๋ merge ๋ช ๋ น์ด ์ฌ์ฉ ์ ๊ธฐ๋ณธ ์ ๋ต์ผ๋ก recursive ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ด ๋์ํฉ๋๋ค.1. ๋ ์ปค๋ฐ์ ๊ณตํต ์กฐ์ ์ปค๋ฐ์ ์ฐพ์ต๋๋ค.2. ๊ฐ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ์กฐํฉํด ์๋ก์ด ๋ณํฉ ์ปค๋ฐ์ ๋ง๋ญ๋๋ค.3. 2๋ฒ์์ ์ถฉ๋์ด ๋๋ฉด ์ฌ์ฉ์์๊ฒ ํด๊ฒฐ์ ์์ํฉ๋๋ค. (recursive ์ ๋ต) ์ด์ ์ํฉ ์์ธํ ์ด์๊ฐ ์๊ฒผ๋ ์ํฉ์ ๊ทธ๋๋ก ๊ฐ์ ธ์๋ดค์ต๋๋ค.main branch ์์ 24.12.0 ๋ธ๋์น๋ฅผ..
์๋ฌError [ERR_REQUIRE_ESM]: require() of ES Module /app/node_modules/packageA/node_modules/packageB/dist/index.cjs.js from /app/node_modules/packageA/dist/cjs/hooks.js not supported.index.cjs.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which declares all .js files in that package scope as ES modules.Instead either rename index..
์์ดํฐ ์ฒ์ง์ธ ํค๋ณด๋์์ "์ ์" ๋ผ๋ ๊ธ์๋ฅผ ์ ๋ ฅํ ๋, "์ต" -> "์ แแ" -> "์ แแข" ์ด๋ ๊ฒ ์ ๋ ฅ์ด ๋๋๋ฐ ํ๊ธ๋ง ๋์ํ๊ธฐ ์ํด ๋ฃ์ด๋์๋ regex ๊ฐ ๋์ํ๋ฉด์ ๊ธ์๋ฅผ ์ง์๋ฒ๋ฆฌ๋ ์ด์๊ฐ ๋ฐ์ํ์ต๋๋ค. [๊ธฐ์กด Regex]return target.replace(/[^๊ฐ-ํฃใแแขใฑ-ใ ใ -ใ ฃa-zA-Z\s]/g, '');ํ๊ธ, ์์ด๊ฐ ์๋ ๋ฌธ์๋ ์ ๊ฑฐํ๊ธฐ ์ํ regex ์ ๋๋ค. [์ด์ ์์ธ] ์ข ์ฑ ์์๊ณผ ใแแข ๊ฐ์ ์ฒจ์๊ฐ ํฉ์ณ์ง๋ฉด์ ์๋ก์ด ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ๋ง๋ญ๋๋ค. [๋ณ๊ฒฝ๋ Regex]/*** ์์ดํฐ ์ฒ์ง์ธ์ ๋์ํฉ๋๋ค.* \u1100-\u1112 ์์ ใฑ-ใ * \u318D\u119E\u11A2\u2022\u2025\u00B7\uFE55 - ใแแข•โฅ·๏น*/ret..
์ค๋์ Next JS์์ Client Data fetching ์ฌ์ฉ ์ ๋ง์ฃผํ ์ ์๋ Anchoring ์ด์์ ๋ํด ์ ๋ฆฌํ๋ ค ํฉ๋๋ค. Next JS docs์์ ๊ถ์ฅํ๊ณ ์๋ ์ฝ๋ ์คํ์ผ์ ์ ์ฉํ์ ๋ ์๊ธธ ์ ์๋ ์ด์์ด๊ธฐ ๋๋ฌธ์, ๊ด๋ จ ์ด์๊ฐ ์๊ฒผ์ ๋ ์ ๋ ๋๋ฒ๊น ์ ์๊ฐ์ ๊ฝค๋ ์ผ์ต๋๋ค. ๋จผ์ Next JS์ Data fetching์ ๋ํ ์ง์์ด ์ ๋ฌดํ ๋ถ๋ค์ ์ํด ๊ฐ๋ ๋ถํฐ ์ ๋ฆฌํ๊ณ ์ด์์ ๋ํ ํด๊ฒฐ ๊ณผ์ ์ ์ฐจ๋ก๋ก ์ ์ด๋ณด๊ฒ ์ต๋๋ค. Data fetching Next JS๋ฅผ ์ด์ฉํ Data fetching์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์! getStaticProps / getServerSideProps : Server Side์์ ๋ฏธ๋ฆฌ page h..
๊ฐ๋ฐ์ ์งํํ๋ฉด์ ์๋๋ก์ด๋ OS์์ ๋ค์ด๋ฒ ์ฑ์ ์ฌ์ฉํ ๋ (ํน์ ์๋๋ก์ด๋ ๋ฒ์ - ์๋ง๋ 11 ์ด์ ์์๋ง) flex ๋ ์ด์์์ด ๊นจ์ง๋ ์ด์๊ฐ ๋ฐ์ํ์๋ค. css๋ฅผ ๋ค๋ฐฉ๋ฉด์ผ๋ก ๊ณ ์ณ๋ณด๋ฉด์ ํด๊ฒฐํด๋ณด์๋๋ฐ, ์์ธ์ 'flex-shrink๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ'์ด์๋ค. (caniuse) ๋ฐ์ํ ์น์ ๊ตฌ์ถํ ๊ฒฝ์ฐ ํด๋น ์ฌ๋ก๋ฅผ ํผํ๊ธฐ ์ํด css ์ฝ๋์ flex-shrink ์ฌ์ฉ์ ์ง์ํ๋๋ก ํ์.
๋ฌธ์ ์ํฉ next/link๋ฅผ ์ฌ์ฉํ GNB์ mouseEnter event๊ฐ ์๋ํ์ง ์์์ ๋ฉ์ธ ๋ฉ๋ด์ ๋ง์ฐ์ค๋ฅผ ์์ง์ฌ๋ subMenu๊ฐ ๋ฐ๋์ง ์๋ ์ด์๊ฐ ๋ฐ์ํ๋ค. ์์ธ GNB์์ ์ฌ์ฉํ๋ LinkContext์ SuperLink๋ฅผ next/link๋ก ์ฒ๋ฆฌํ๋๋ฐ, next 12 version์์ mouseHover ์ด๋ฒคํธ๊ฐ ์ ๋๋ก ์๋ํ์ง ์๋ ๋ฌธ์ ๊ฐ ์๋ค. fix(Link): Do not ignore onMouseEnter prop with absolute href by ericmatthys · Pull Request #32012 · vercel/next.js Fixes #22733 Regardless of whether it's recommended that Link be used with e..
Comment