React์ ํ์ ๋น๊ต์ key์ ์ญํ ์์ฆ ๋ค์ Advanced React๋ฅผ ์ฝ์ผ๋ฉฐ, React์์ key๊ฐ DOM ์ฌ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ด๋ป๊ฒ ๊ฒฐ์ ์ง๋์ง์ ๋ํ ๋ด์ฉ์ ๋ํด ์ ๋ฆฌํด๋ณด์๋ค. ํ์ ๋น๊ต๋ "DOM ์ฌ์ฌ์ฉ" ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค.const App = () => { const [isMarketMember, setIsMarketMember] = useState(false); .... return ( {isMarketMember ? ( ) : ( )} );}; ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด isMarketMember ๊ฐ์ ๋ฐ๋ผ ์ปดํฌ๋ํธ๊ฐ ๋ฐ๋๋ ๋์์ ๋น์ฐํ ๊ธฐ๋ํ์ง๋ง, ์ค์ ์ฌ์ฉ์ ๊ฒฝํ์์๋ ์ ๋ ฅ๊ฐ์ด ์ ์ง๋๋ค. ์ฆ, Market ID๋ฅผ ์ ๋ ฅํ ๋ค ์ฒดํฌ๋ฐ์ค๋ฅผ ํด์ ํ๋ฉด Name ์ ๋ ฅ.. 2025. 6. 22. debugger ์์ด ํธ์ถ ์คํ ํ์ธํ๋ ๋ฒ ๋๋ฒ๊น ์ ํ๋ค ๋ณด๋ฉด, ์ด๋ค ํ๋ฆ์ผ๋ก ํน์ ํจ์๊ฐ ํธ์ถ๋์๋์ง ํ์ ํด์ผ ํ ๋๊ฐ ์๋ค.๋ณดํต์ debugger๋ฅผ ์ฐ๊ณ ์์ฐจ์ ์ผ๋ก ์คํํด ๋ณด๋ ์์ผ๋ก ์ถ์ ํด ์๋๋ฐ, ์กฐ๊ธ ๋ ๊ฐ๋จํ๊ฒ ํ๋ฆ์ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ด์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด์๋ค.console.trace ๋?ํจ์ ํธ์ถ ๊ฒฝ๋ก(Call Stack)๋ฅผ ์ฝ์์ ์ถ๋ ฅํด ์ฃผ๋ ํจ์๋ค.ํฌ๋๋ฅผ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด์ ํ ์คํธํด ๋ณด์๋ค. const handleChange = (e) => { setInputValue(e.target.value); }; const handleAddTodo = (e) => { e.preventDefault(); if (!inputValue.trim()) return; setTodos((prev) => [...pre.. 2025. 6. 15. Stagewise - ๋ธ๋ผ์ฐ์ ์์ AI ์ฝ๋ ์ปจํ ์คํธ๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๋๊ตฌ ์ต๊ทผ์ Stagewise๋ผ๋ ๋๊ตฌ๋ฅผ ์๊ฒ ๋์๋ค. AI ๊ธฐ๋ฐ ์ฝ๋ ์๋ํฐ๋ฅผ ์ํ ์๊ฐ์ ๋์ฐ๋ฏธ๋ผ๋ ์ปจ์ ์ผ๋ก ๋ง๋ค์ด์ก๊ณ , ์ฌ๋ก๊ฑด์ "Eyesight for your AI-powered Code Editor" ๋ผ๊ณ ํ๋ค. ๊ฐ๋จํ ๋งํ๋ฉด, AI ์ฝ๋ ์์ฑ์ด๋ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ ๋ธ๋ผ์ฐ์ ์ชฝ UI ์ปจํ ์คํธ๋ฅผ AI์๊ฒ ๋ ์ ์ ๋ฌํด ์ฃผ๋ ์ญํ ์ ํ๋ ๋๊ตฌ๋ค. ์ด๋ฒ ๊ธ์์๋ Stagewise๊ฐ ์ด๋ค ๋๊ตฌ์ธ์ง, ์ด๋ป๊ฒ ๋์ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํด ๋ณด๋ฉฐ ๋๋ ์ ์ ์ ๋ฆฌํด ๋ณด์๋ค.์ค์น + ๊ธฐ๋ณธ ๊ตฌ์ฑ์ค์น์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ๊ณต์ Quickstart ๊ธฐ์ค์ผ๋ก VS Code ์ต์คํ ์ ์ค์น์ Toolbar ์ฃผ์ ๋ ๋จ๊ณ๋ก ์งํ๋๋ค. Plugins ๊ธฐ๋ฅ์ผ๋ก ํด๋ฐ UI์ AI ์ปจํ ์คํธ ํ์ฅ์ด ๊ฐ๋ฅํ๋ฉฐ, ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ด ๊ฐ๋จ.. 2025. 6. 6. ๋ชจ๋ ธ๋ ํฌ์์ ์ค์ ๊ณตํตํํ๊ธฐ ์ด์ ํ์ ๋ชจ๋ ธ๋ ํฌ ํ๊ฒฝ์ด๋ผ ๊ฐ ํ๋ก์ ํธ๋ง๋ค ์ค์ ์ ๋ฐ๋ก ๊ด๋ฆฌํ๊ณ ์์๋๋ฐ, ์ค์ ์ ์ค์ํํ๋ ค๋ ๋ฐฉํฅ์ด ์กํ๋ ์์ ์, lingui ์ค์ ๊ณตํตํ ์์ ์ ๋งก๊ฒ ๋์๋ค.BEFORE๊ฐ ํ๋ก์ ํธ๋ง๋ค ๊ฐ๋ณ์ ์ผ๋ก lingui ์ค์ ์ ๋ค๊ณ ์์๋๋ฐ, ์ค์ ๋ด์ฉ์ ๋ณด๋ฉด ๊ฑฐ์ ๋์ผํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์์๋ค.apps/โโโ a-web/ # a ๋๋ฉ์ธ ์น์ฑ (lingui ์ฌ์ฉ)โโโ b-web/ # b ์ฌ์ดํธ (lingui ์ฌ์ฉ)โโโ c-web/ # c ์ฌ์ดํธ (lingui ์ฌ์ฉ)โโโ d-web/ # ์ฌ์ฉ์ ๊ด๋ฆฌ ์ฌ์ดํธ (lingui ์ฌ์ฉ) ๋ฌธ์ ๋ ์ด ์ค์ ๋ค์ด ๊ฐ๊ฐ ๋ฐ๋ก ๊ด๋ฆฌ๋๋ค ๋ณด๋์ค์ ์ ๋ณ๊ฒฝํ ๋ ์ฌ๋ฌ ํ์ผ์ ์ง์ ์์ ํด์ผ ํ๊ณ ์๋ก ํจํค์ง๋ฅผ ๋ง๋ค ๋๋ง๋ค ์ค์ ์ ๋ณต๋ถ ํ๋.. 2025. 5. 30. React ๋ฒ๋ค ์ต์ ํ ์์ฝ ์ต๊ทผ์ โจ How I Reduced My React Bundle Size by 30% ๋ผ๋ ๊ธ์ ์ฝ์๋ค.ํด๋น ๊ธ์ ์ค์ ๋ฐ๋ชจ ์ฑ์ ๊ธฐ์ค์ผ๋ก ๋ฒ๋ค ์ฌ์ด์ฆ๋ฅผ ๋จ๊ณ์ ์ผ๋ก ์ค์ฌ๋๊ฐ๋ ๊ณผ์ ์ ์ค๋ช ํ๊ณ ์์๋๋ฐ, ๋ด์ฉ์ ๋ณด๋ฉฐ ์์ ํ์ฌ์์์ ๊ธฐ์ต์ด ๋ ์ฌ๋๋ค. ๊ทธ๋ ์ฝ 2์ฃผ๊ฐ ๋ฆฌํฉํ ๋ง ๊ธฐ๊ฐ์ด ์ฃผ์ด์ก๊ณ , ํ์๋ณ๋ก ๋น๋ ์๋ ๊ฐ์ ์ ์ํด ๋ถํ์ํ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋, lodash ์ ์ฒด import๋ฅผ ํ๋ ๋ฐฉ์์์ ํ์ํ ํจ์๋ง ๊ฐ๋ณ import ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ๊พธ๋ ์์ ๋ฑ์ ์งํํ์๋ค. ๊ทธ๋๋ ๊ธฐ๋ณธ์ ์ธ ๊ฒ ์ธ์๋ ์ ๋ชฐ๋๊ธฐ ๋๋ฌธ์, ๋ญ๊ฐ ์ง์ ์ ์ํ๊ฑฐ๋ ์๊ฒฌ์ ๋ด์ง ๋ชปํ๋ ๊ฒ ๋ ์์ฌ์ ๋ค. ์ด๋ฒ ๊ธ์ ์ฝ์ผ๋ฉฐ, ๋ค์์ ๋น์ทํ ๊ธฐํ๊ฐ ์ค๋ฉด ์ข ๋ ์ฃผ๋์ ์ผ๋ก ์์ง์ผ ์ ์์ง ์์๊น ํ๋ ์๊ฐ์ด ๋ค์๊ณ , ๊ธ์ ์ฃผ์ ๋ด์ฉ์ ๊ฐ๋จ.. 2025. 5. 25. cloneElement๋ฅผ ์ฐ์ง ๋ชปํ ์ด์ ๊ณตํต ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๋ค ๋ณด๋ฉด ์์ฃผ ๊ฒช๊ฒ ๋๋ ํ๋ฆ์ด ์๋ค.์ฒ์์๋ ์ ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์์ธกํ์ง ๋ชปํ๋ ๊ธฐํ ์๊ตฌ๊ฐ ์ถ๊ฐ๋๊ณ , ๋ค์ํ ํ๊ฒฝ์์ ์ฌ์ฌ์ฉ๋๋ฉด์ props๋ ์ ์ ๋์ด๋๊ณ ๋ด๋ถ ๋ก์ง๋ ํจ๊ป ๋ณต์กํด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๊ทธ๋์ ํฅํ ์ด๋ค ์กฐ๊ฑด์ด ๋ํด์ง์ง๋ ์์ธกํ ์ ์์ง๋ง, ์ต์ํ ์ด๊ธฐ ์ค๊ณ ๋จ๊ณ์์๋ ๋ด๋ถ์์ ๋ชจ๋ ์ ์ฑ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉํฅ์ผ๋ก ๊ตฌํํ๊ณ ์ถ์ ๋ง์์ด ๋ ์๋ค. ๋ฌผ๋ก ๊ณตํตํ๊ฐ ์ธ์ ๋ ์ ๋ต์ด๋ผ๊ณ ์๊ฐํ์ง๋ ์๋๋ค. ๊ธํ ์ผ์ ์์์ ๊ฐ๋ฐํ๊ฑฐ๋ ๊ธฐํ์ด 1์ฐจ, 2์ฐจ๋ก ๋๋ ์ง๋ ๊ฒฝ์ฐ์๋ ์ฃ๋ถ๋ฅธ ๊ณตํตํ๋ณด๋ค๋ ์ต๋ํ ์ ์ฝํ๋ ์ฝ๋๋ฅผ ์ฐ์ ์ผ๋ก ๊ฐ๋ฐํ ๋ค, ๋์ค์ ํผ์ ๋ฆฌํฉํ ๋งํ๋ ์์ผ๋ก ์ ๊ทผํ๋ค. ์ด๋ฒ์ ๊ฐ๋ฐํ ๊ธฐ๋ฅ์ ์ ๋ ฅ์ฐฝ ์์ ๋ฒํผ์ ๋ถ์ด๊ณ , ๋ฒํผ ํด๋ฆญ ์ ํ ์คํธ .. 2025. 5. 4. ํจ์จ์ ์ธ DOM ์กฐ์์ผ๋ก ์ฑ๋ฅ ์ต์ ํํ๊ธฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ DOM์ ์กฐ์ํ๋ ์์ ์ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ค. ์ต๊ทผ์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ DOM ์กฐ์์ ์ํ ์ฌ๋ฌ ๊ฐ์ง ํจํด์ ์๊ฐํ๋ ๊ธ์ ์ฝ์๋๋ฐ, ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด ๋ณด์๋ค.1. ์์ ์จ๊ธฐ๊ธฐ/๋ณด์ด๊ธฐ ๋์ ์์ฑ/์ญ์ ํผํ๊ธฐ DOM์์ ๋์ ์ผ๋ก ์์๋ฅผ ์์ฑํ๊ณ ์ญ์ ํ๋ ์์ ์ ์ฑ๋ฅ์ ๋ถ๋ด์ ์ค ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ฆฌ์คํธ ํญ๋ชฉ์ ๋์ ์ผ๋ก ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒฝ์ฐ, ๋งค๋ฒ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ ๋ค์ ํ ๋น๋๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋๋ฐ ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด, ์์๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์ถ๊ฐํ๋ ๋์ , ์ด๋ฏธ ์กด์ฌํ๋ ์์๋ฅผ ์จ๊ธฐ๊ฑฐ๋ ๋ณด์ด๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ ํจ์ฌ ํจ์จ์ ์ด๋ค. const el = document.querySelector('#element');el.classList.add('show.. 2025. 4. 27. requestAnimationFrame ์ผ๋ก ํ๋ ์ ํ์ด๋ฐ ๋ง์ถ๊ธฐ ๐จ ๊ธ์ ๋ค์ด๊ฐ๊ธฐ ์์ ๋ธ๋ผ์ฐ์ ๋ ํ๋ฉด์ ๊ทธ๋ฆด ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์คํDOM ๋ณ๊ฒฝ ๊ฐ์ง์คํ์ผ ๊ณ์ฐLayout (Reflow) – ์์์ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐPaint – ๊ณ์ฐ๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ํฝ์ ์ ๊ทธ๋ฆฌ๊ธฐComposite – ๋ ์ด์ด๋ฅผ ์กฐํฉํด ์ต์ข ์ ์ผ๋ก ํ๋ฉด์ ์ถ๋ ฅ์ ์ฌ์ดํด์ ๋ณดํต 1์ด์ 60๋ฒ, ์ฝ 16.6ms๋ง๋ค ๋ฐ๋ณต๋๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ ์ด ์ฃผ๊ธฐ์ ๋ง์ถฐ ์ต๋ํ ๋ถ๋๋ฝ๊ฒ ํ๋ฉด์ ๋ ๋๋ง์ ํ๋๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ์์ DOM์ ์กฐ์ํ๊ฑฐ๋ ์ ๋๋ฉ์ด์ ์ ์ฒ๋ฆฌํ ๋ ์ด ํ์ด๋ฐ์ ๊ณ ๋ คํ์ง ์์ผ๋ฉด, ํ๋ ์ ๋๋กญ, ๋๊น, ๋๋ ค์ง ์ธํฐ๋์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์ฝ๊ฒ ๋ฐ์ํ๋ค๊ณ ํ๋ค.โจ requestAnimationFrame ์ด๋?window.requestAnimationFrame() ๋ฉ์๋๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ์.. 2025. 3. 30. ์ด์ 1 2 3 4 ยทยทยท 9 ๋ค์