์ด๋ฒ ์ฅ์์๋State์ Props์ ๊ฐ๋
๊ณผ ์ฐจ์ด์ ์ ์์ธํ ๋ค๋ค๋ณผ ์์ ์
๋๋ค.์ฌ๋ฌ๋ถ์ React์ state์ ์ผ๋งํผ ์๊ณ ๊ณ์ ๊ฐ์ ? ๋์ ์ฐจ์ด๋ ๋ญ๊น์ ? ๊ฒฐ๋ก ๋ถํฐ ๋ณด์๋ฉด,state ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๋ํ๋ด๋ ๋ฐ์ดํฐ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๊ด๋ฆฌ๋๋ ๋์ ์ธ ๋ฐ์ดํฐ๋ก, ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ฉฐ ์ฃผ๋ก UI์ ๋์์ ์ ์ดํฉ๋๋ค.props ์ธ๋ถ๋ก๋ถํฐ ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌ๋๋ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ๋ก, ์ฃผ๋ก ์ปดํฌ๋ํธ ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์๋ ์น ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํ์ ๋ state๊ฐ ์์๋ค๋ฉด.์ด๋ฅผ ์ํด์ ํ์ด์ง์ ์๋ ๋ฐ์ดํฐ ๋ถ๋ถ์ด ๋ณ๊ฒฝ๋์์ ๋๋ง๋ค DOM์ ์ ๊ทผํ์ฌ ์ง์ ์์ ํด ์ฃผ์์ ๊ฒ์
๋๋ค.๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋งํผ ๋น์ฐํ ํ๋ฉด๋ ๋ณ๊ฒฝ๋์ด์ผ ํ๋๊น์ ์ฌ๊ธฐ์ ์ ..
๊ธฐ์ด ํ๋ก์ ํธ์์ ์ฒ์์ผ๋ก Jotai๋ฅผ ์ฌ์ฉํด๋ณด์๊ณ , ๊ทธ ๊ฒฝํ์ ๋ฐํ์ผ๋ก Jotai์ ์ฅ์ ๊ณผ ๋จ์ ์ Context์ Zutand๋ฅผ ๋น๊ตํด๋ณด๋ ค ํฉ๋๋ค. Jotai ์ฌ์ฉ ํ Context์ Zustand์์ ๋น๊ต ๐ซ ๐ Jotai ์ฌ์ฉ ์์ import React from 'react';import { atom, useAtom } from 'jotai';// atom ์ ์const countAtom = atom(0);function Counter() { const [count, setCount] = useAtom(countAtom); return ( ์นด์ดํธ: {count} setCount(count + 1)}>์ฆ๊ฐ );}export default function ..
1. Styled ComponentsStyled Components๋ CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ก, ์คํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ ์์ ์์ฑํ๊ณ , ์ปดํฌ๋ํธ ๋จ์๋ก ์บก์ํํ ์ ์๋ค.์ฅ์ ๐์๋ ์ต์ ํ: ๋ถํ์ํ ํด๋์ค ์์ฑ์ด๋ ์ค๋ณต๋ ์คํ์ผ ์ ๊ฑฐ ๋ฑ ์ต์ ํ๊ฐ ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.๋์ ์คํ์ผ๋ง: Prop์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์คํ์ผ์ ๋ณ๊ฒฝํ ์ ์๋ค.CSS์ ๋ฒ์: CSS๊ฐ ์ปดํฌ๋ํธ ๋จ์๋ก ์บก์ํ๋์ด ์ ์ญ ๋ค์์คํ์ด์ค ์ถฉ๋ ๋ฌธ์ ๊ฐ ์๋ค.๋จ์ ๐๋ฐํ์ ์ฑ๋ฅ ์ ํ: Styled Components๋ ์คํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ฐํ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค. ํนํ ๋ง์ ์ปดํฌ๋ํธ๊ฐ ์์ ๊ฒฝ์ฐ ์คํ์ผ์ ๊ณ์ฐํ๊ณ ์ ์ฉํ๋ ์๊ฐ์ด ์ฆ๊ฐํ ์ ์๋ค.ํจํค์ง ํฌ๊ธฐ ์ฆ๊ฐ: ์ถ๊ฐ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํด์ผ..
๐ช ๋จผ์ ์์์ผํ ๊ฐ๋
์ปดํฌ๋ํธ ์ธ๋ง์ดํธ๋ ?์ปดํฌ๋ํธ ์ธ๋ง์ดํธ(Unmount)๋ React ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋๋ ์ํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์์ ์ฌ๋ผ์ง๊ฑฐ๋ ๋ ์ด์ ํ์ ์์ ๋ ๋ฐ์ํฉ๋๋ค.์ผ๋ฐ์ ์ผ๋ก ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋๋ ๊ฒฝ์ฐ ๐ญ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ด๋ํ ๋์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ํตํด ์ปดํฌ๋ํธ๊ฐ ์จ๊ฒจ์ง๊ฑฐ๋ ์ ๊ฑฐ๋ ๋๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋ ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋์ ํด๋ฆฐ์
์ด๋ฒคํธ ๋ฆฌ์ค๋๋ ๋ธ๋ผ์ฐ์ ์์ ํน์ ์ด๋ฒคํธ(์: ํด๋ฆญ, ๋ฆฌ์ฌ์ด์ฆ, ์
๋ ฅ ๋ฑ)๊ฐ ๋ฐ์ํ ๋ ํธ์ถ๋๋ ํจ์์
๋๋ค. ์๋ฅผ ๋ค์ด, window.addEventListener('resize', handleResize)๋ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ๋๋ง๋ค handleResize ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ ํด๋ฆฐ์
์ด ํ์ํ๊ฐ?์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ..
์ฒซ ๋ฒ์งธ ์ฝ๋React 18import React from 'react';import ReactDOM from 'react-dom/client';const root = ReactDOM.createRoot(document.getElementById('root'));root.render(์๋
๋ฆฌ์กํธ !); React 18 ์ด์: React 18์์๋ ์๋ก์ด Root API์ธ ReactDOM.createRoot๋ฅผ ์ฌ์ฉํฉ๋๋ค.Concurrent Mode ์ง์: ์ด ์๋ก์ด API๋ React์ Concurrent Mode์ ๋ ๋์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ง์ํฉ๋๋ค.์ฌ์ฉ๋ฒcreateRoot๋ฅผ ์ฌ์ฉํ์ฌ root๋ฅผ ์์ฑํฉ๋๋ค.์์ฑ๋ root์์ render ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. ๋ ๋ฒ์งธ ์ฝ๋React 17import Reac..