React ìê° ë¶í (Time Slicing)ì ê°ë ¥í êž°ë¥ì íì©íì¬ ë ëë§ ì°ì ìì륌 ìµì ííìžì. ë³µì¡í 컎í¬ëížì ë°ìŽí° ì ë°ìŽíž ìí©ììë ì ì°íê³ ë°ìì±ìŽ ë°ìŽë ì¬ì©ì ìží°íìŽì€ë¥Œ 볎ì¥í©ëë€.
React ìê° ë¶í (Time Slicing): ë°ìŽë ì¬ì©ì 겜íì ìí ë ëë§ ì°ì ìì ë§ì€í°íêž°
ìëì ìž ì¹ ê°ë°ì ìžê³ìì ë°ìì±ìŽ ë°ìŽëê³ ë§€ë ¥ì ìž ì¬ì©ì ìží°íìŽì€(UI)륌 ë§ëë ê²ì ë§€ì° ì€ìí©ëë€. ì¬ì©ìë€ì ë³µì¡í ì í늬ìŒìŽì ì ë€ë£° ëìë ëê¹ ìë ìížìì©ê³Œ ìŠê°ì ìž íŒëë°±ì êž°ëí©ëë€. UI 구ì¶ì ìí ìžêž° ìë JavaScript ëŒìŽëžë¬ëŠ¬ìž Reactë ìŽë¥Œ ë¬ì±íêž° ìí ê°ë ¥í ë구ë€ì ì ê³µíë©°, ê·žì€ ê°ì¥ íšê³Œì ìž ê² ì€ íëê° ìê° ë¶í (Time Slicing)ì ëë€.
ìŽ ì¢ í© ê°ìŽëììë React ìê° ë¶í ì ê°ë ì í구íê³ , ê·ž ìŽì , 구í ë°©ë² ë° ëªšë² ì¬ë¡ì ëíŽ ììží ììëŽ ëë€. ìê° ë¶í ìŽ ìŽë»ê² ë ëë§ ìì ì ì°ì ìì륌 ì íì¬ ì€ìí ì ë°ìŽížì ìížìì©ìŽ ì ìíê² ì²ëЬëëë¡ ë³Žì¥íê³ , 결곌ì ìŒë¡ ë ë¶ëëœê³ ìŠê±°ìŽ ì¬ì©ì 겜íìŒë¡ ìŽìŽì§ëì§ ììë³Žê² ìµëë€.
React ìê° ë¶í (Time Slicing)ìŽë 묎ììžê°?
React ìê° ë¶í ì Reactì ëìì± ëªšë(concurrent mode)ì ìŒë¶ë¡ ëì ë êž°ë¥ì ëë€. ìŽë Reactê° ë ëë§ ìì ì ë ìê³ ì€ëš ê°ë¥í ëšìë¡ ëë ì ìê² íŽì€ëë€. Reactë ëšìŒì ꞎ ë ëë§ ìì ìŒë¡ ë©ìž ì€ë ë륌 ì°šëšíë ëì , ë ëë§ì ìŒì ì€ì§íê³ ëžëŒì°ì ê° ì¬ì©ì ì ë ¥ìŽë ë€ë¥ž ìì ì ì²ëЬíëë¡ ì볎í ë€ì, ì€ëšë ì§ì ë¶í° ë ëë§ì ì¬ê°í ì ììµëë€. ìŽê²ì ë³µì¡í ì늬륌 ì€ë¹íë ì늬ì¬ì ê°ìµëë€. ì늬ì¬ë ì±ì륌 ì°ê³ (UIì ìŒë¶ë¥Œ ë ëë§), ìì€ë¥Œ ì ê³ (ì¬ì©ì ìížìì© ì²ëЬ), ë€ì ì±ì륌 ìšë ìì ìŒë¡ ëìê° ì ììµëë€. ìŽë í¹í ëê·ëªš ì ë°ìŽížë ë³µì¡í 컎í¬ëíž ížëЬìì ì¬ì©ìê° ë©ì¶€ìŽë ì§ì°ì 겜ííë ê²ì ë°©ì§í©ëë€.
ìì¬ì ìŒë¡ React ë ëë§ì ëêž°ì ìŽììµëë€. ìŠ, 컎í¬ëížê° ì ë°ìŽížëìŽìŒ í ë ì 첎 ë ëë§ íë¡ìžì€ê° ìë£ë ëê¹ì§ ë©ìž ì€ë ë륌 ì°šëšíìµëë€. ìŽë ë³µì¡í UIë ë¹ë²í ë°ìŽí° ë³ê²œìŽ ìë ì í늬ìŒìŽì ìì ëì ëë ì§ì°ì ì ë°í ì ìììµëë€. ìê° ë¶í ì Reactê° ë ëë§ ìì ì ë€ë¥ž ìì 곌 ë²ê°ì ìíí ì ìê² íšìŒë¡ìš ìŽ ë¬žì 륌 íŽê²°í©ëë€.
íµì¬ ê°ë : Fiberì ëìì±(Concurrency)
ìê° ë¶í ì ìŽíŽíë €ë©Ž ë ê°ì§ íµì¬ ê°ë ì ìµìíŽì žìŒ í©ëë€:
- Fiber: Fiberë 컎í¬ëížì ëí Reactì ëŽë¶ ííì ëë€. ìŽë Reactê° ì²ëЬí ì ìë ìì ëšì륌 ëíë ëë€. Reactê° ë ëë§ ì§í ìí©ì ì¶ì í ì ìëë¡ ì¶ê° ì ë³Žê° í¬íšë ê°ì DOM ë žëëŒê³ ìê°í ì ììµëë€.
- ëìì±(Concurrency): Reactì ë§¥ëœìì ëìì±ì ì¬ë¬ ìì ì ëìì ìííë ê²ì²ëŒ 볎ìŽë ë¥ë ¥ì ì믞í©ëë€. Reactë UIì ë€ë¥ž ë¶ë¶ì ëìì ìì íë©°, ì€ìëì ë°ëŒ ì ë°ìŽížì ì°ì ìì륌 ì í ì ììµëë€.
Fiberë Reactê° ë ëë§ ìì ì ìŒì ì€ì§íê³ ì¬ê°í ì ìê² íì¬ ìê° ë¶í ì ê°ë¥íê² í©ëë€. ëìì±ì Reactê° ì¬ë¬ ìì ì ì°ì ìì륌 ì íì¬ ê°ì¥ ì€ìí ì ë°ìŽížê° 뚌ì ì²ëЬëëë¡ ë³Žì¥í©ëë€.
ìê° ë¶í ì ìŽì
React ì í늬ìŒìŽì ì ìê° ë¶í ì 구íí멎 ë€ì곌 ê°ì ëª ê°ì§ ì€ìí ìŽì ìŽ ììµëë€:
- ë°ìì± í¥ì: ë ëë§ì ë ìì ë©ìŽëŠ¬ë¡ ëëìŽ ìê° ë¶í ì ë©ìž ì€ë ëê° ì°šëšëë ê²ì ë°©ì§íì¬ ë ë°ìì±ìŽ ë°ìŽë UI륌 ë§ëëë€. ì¬ì©ì ìížìì©ìŽ ë ë¹ ëŠ¿íê² ë껎ì§ê³ ì ëë©ìŽì ìŽ ë ë¶ëëœê² 볎ì ëë€.
- ì¬ì©ì 겜í ê°ì : ë°ìì±ìŽ ë°ìŽë UIë ë ëì ì¬ì©ì 겜íìŒë¡ ì§ì ìŽìŽì§ëë€. ì¬ì©ìë ëµëµí ì§ì°ìŽë ë©ì¶€ì 겪ì ê°ë¥ì±ìŽ ì€ìŽë€ìŽ ì í늬ìŒìŽì ì¬ì©ìŽ ë ìŠê±°ìì§ëë€. í° í ì€íž ììì ì¬ì©ìê° ì ë ¥íë ìí©ì ììíŽ ë³Žìžì. ìê° ë¶í ìŽ ìë€ë©Ž ê° í€ ì ë ¥ìŽ UI륌 ì ì ë©ì¶ê² íë 늬ë ëë§ì ì ë°í ì ììµëë€. ìê° ë¶í ì ì¬ì©í멎 늬ë ëë§ìŽ ë ìì ë©ìŽëŠ¬ë¡ ëëìŽ ì¬ì©ìê° ì€ëš ììŽ ê³ì ì ë ¥í ì ììµëë€.
- ì°ì ììê° ì§ì ë ì ë°ìŽíž: ìê° ë¶í ì íµíŽ ë€ìí ì íì ì ë°ìŽížì ì°ì ìì륌 ë¶ì¬í ì ììµëë€. ì륌 ë€ìŽ, 백귞ëŒìŽë ë°ìŽí° ê°ì žì€êž°ë³Žë€ ì¬ì©ì ì ë ¥ì ì°ì ìì륌 ëìŽ UIê° ì¬ì©ì íëì ê³ì ë°ìíëë¡ í ì ììµëë€.
- ì ì¬ì êž°êž°ììì ì±ë¥ í¥ì: ìê° ë¶í ì ì²ëЬ ë¥ë ¥ìŽ ì íë êž°êž°ìì ì±ë¥ì í¬ê² í¥ììí¬ ì ììµëë€. ë ëë§ ìì ì ìê°ì ê±žì³ ë¶ì°ìíŽìŒë¡ìš CPU ë¶í륌 ì€ì¬ êž°êž°ê° ê³Œë¶íëë ê²ì ë°©ì§í©ëë€. ê°ë°ëìêµì 구í ì€ë§íží°ìŒë¡ ì í늬ìŒìŽì ì ì ìíë ì¬ì©ì륌 ìê°íŽ ë³Žìžì. ìê° ë¶í ì ì¬ì© ê°ë¥í 겜í곌 ì¬ì© ë¶ê°ë¥í 겜íì ì°šìŽë¥Œ ë§ë€ ì ììµëë€.
ëìì± ëªšë(Concurrent Mode)ë¡ ìê° ë¶í 구ííêž°
ìê° ë¶í ì íì©íë €ë©Ž React ì í늬ìŒìŽì ìì ëìì± ëªšë륌 íì±ííŽìŒ í©ëë€. ëìì± ëªšëë ìê° ë¶í ë° êž°í ì±ë¥ ìµì íì ì ì¬ë ¥ì ìµëí ë°íí ì ìê² íŽì£Œë Reactì ìë¡ìŽ êž°ë¥ ëªšìì ëë€.
ë€ìì ëìì± ëªšë륌 íì±ííë ë°©ë²ì ëë€:
1. React ë° ReactDOM ì ë°ìŽíž
React 18 ìŽì ë²ì ì ì¬ì©íê³ ìëì§ íìžíìžì. package.json
íìŒìì ì졎ì±ì ì
ë°ìŽíží©ëë€:
"dependencies": {
"react": "^18.0.0",
"react-dom": "^18.0.0"
}
ê·žë° ë€ì npm install
ëë yarn install
ì ì€ííì¬ ì졎ì±ì ì
ë°ìŽíží©ëë€.
2. ë£šíž ë ëë§ API ì ë°ìŽíž
index.js
ëë index.tsx
íìŒì ìì íì¬ react-dom/client
ì ìë¡ìŽ createRoot
API륌 ì¬ì©íëë¡ ë³ê²œí©ëë€:
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
);
íµì¬ì ìž ë³ê²œ ì¬íì ReactDOM.render
ëì ReactDOM.createRoot
륌 ì¬ì©íë ê²ì
ëë€. ìŽê²ìŽ ì í늬ìŒìŽì
ì ëìì± ëªšë륌 íì±íí©ëë€.
ë ëë§ ì°ì ìì êŽëЬ êž°ë²
ëìì± ëªšë륌 íì±íí íìë ë€ìí êž°ë²ì ì¬ì©íì¬ ë ëë§ ì°ì ìì륌 êŽëЬíê³ ì±ë¥ì ìµì íí ì ììµëë€.
1. useDeferredValue
useDeferredValue
í
ì ì¬ì©í멎 ì€ìíì§ ìì UI ë¶ë¶ì ì
ë°ìŽížë¥Œ ì§ì°ìí¬ ì ììµëë€. ìŽë íìíŽìŒ í ëê·ëªš ë°ìŽí° ìžížê° ìì§ë§ ì¬ì©ì ì
ë ¥ìŽë ë€ë¥ž ë ì€ìí ì
ë°ìŽížì ì°ì ìì륌 ëê³ ì¶ì ë ì ì©í©ëë€. ìŽë 볞ì§ì ìŒë¡ Reactìê² "ìŽ ê°ì ê²°êµ ì
ë°ìŽížíë, ê·žê²ì êž°ë€ëŠ¬ë©° ë©ìž ì€ë ë륌 ì°šëšíì§ ë§ëŒ"ê³ ë§íë ê²ê³Œ ê°ìµëë€.
ìë ì ì êž°ë¥ìŽ ìë ê²ìì°œì ìê°íŽ ë³Žìžì. ì¬ì©ìê° ì
ë ¥í멎 ì ììŽ íìë©ëë€. ìŽ ì ìì `useDeferredValue`륌 ì¬ì©íì¬ ì§ì°ìí¬ ì ììŒë¯ë¡ íìŽí 겜íì ë¶ëëœê² ì ì§ëê³ ì ìì ìœê° ë€ëŠê² ì
ë°ìŽížë©ëë€.
import React, { useState, useDeferredValue } from 'react';
function SearchBar() {
const [query, setQuery] = useState('');
const deferredQuery = useDeferredValue(query);
return (
setQuery(e.target.value)} />
);
}
function Suggestions({ query }) {
// ìŽ ì»Ží¬ëížë ì§ì°ë 쿌늬 ê°ìŒë¡ 늬ë ëë§ë©ëë€.
// ì ìì ë ëë§ì ì°ì ììê° ë®ìì§ëë€.
const suggestions = getSuggestions(query); // 쿌늬륌 êž°ë°ìŒë¡ ì ìì ê°ì žì€ë ê²ì ì뮬ë ìŽì
í©ëë€.
return (
{suggestions.map((suggestion) => (
- {suggestion}
))}
);
}
function getSuggestions(query) {
// APIë ë°ìŽí° ìì€ìì ì ìì ê°ì žì€ë ê²ì ì뮬ë ìŽì
í©ëë€.
// ì€ì ì í늬ìŒìŽì
ììë API ížì¶ìŽ í¬íšë ê°ë¥ì±ìŽ ëìµëë€.
const allSuggestions = ["apple", "banana", "cherry", "date", "elderberry"];
return allSuggestions.filter(suggestion => suggestion.startsWith(query));
}
export default SearchBar;
ìŽ ìì ìì Suggestions
컎í¬ëížë ì§ì°ë 쿌늬 ê°ìŒë¡ 늬ë ëë§ë©ëë€. ìŽë Reactê° ì ìì ë ëë§íë ê²ë³Žë€ ì
ë ¥ íë륌 ì
ë°ìŽížíê³ ì¬ì©ì ì
ë ¥ì ì²ëЬíë ë° ì°ì ìì륌 ëìŽ ë ë¶ëë¬ìŽ íìŽí 겜íì ì ê³µíë€ë ê²ì ì믞í©ëë€.
2. useTransition
useTransition
í
ì í¹ì ìí ì
ë°ìŽížë¥Œ ꞎêžíì§ ìì ì í(transition)ìŒë¡ íìíë ë°©ë²ì ì ê³µí©ëë€. ìŽë ì¬ì©ì íëì ëí ìëµìŒë¡ UI륌 ì
ë°ìŽížíê³ ì¶ì§ë§, íŽë¹ ì
ë°ìŽížê° ë©ìž ì€ë ë륌 ì°šëšíì§ ìꞰ륌 ìí ë ì ì©í©ëë€. ìŽë ìí ì
ë°ìŽížë¥Œ ꞎêž(ì: íìŽí)곌 ì í(ì: ì íìŽì§ë¡ ìŽë)ìŒë¡ ë¶ë¥íë ë° ëììŽ ë©ëë€.
ëì볎ëì ì¬ë¬ ì¹ì ê°ì ìŽëíë ê²ì ììíŽ ë³Žìžì. `useTransition`ì ì¬ì©í멎 ëŽë¹ê²ìŽì ì ì íìŒë¡ íìíì¬ ì ì¹ì ìŽ ë¡ëëê³ ë ëë§ëë ëì UIê° ë°ìì±ì ì ì§í ì ììµëë€.
import React, { useState, useTransition } from 'react';
function Dashboard() {
const [isPending, startTransition] = useTransition();
const [section, setSection] = useState('home');
const navigateTo = (newSection) => {
startTransition(() => {
setSection(newSection);
});
};
return (
{isPending && Loading...
}
);
}
function Section({ content }) {
// ì¹ì
ì ë°ëŒ ìœí
ìž ë¥Œ ë¡ëíë ê²ì ì뮬ë ìŽì
í©ëë€.
let sectionContent;
if (content === 'home') {
sectionContent = í íìŽì§ì ì€ì ê²ì íìí©ëë€!
;
} else if (content === 'profile') {
sectionContent = ì¬êž°ë ë¹ì ì íë¡íì
ëë€.
;
} else if (content === 'settings') {
sectionContent = ì¬êž°ì ì€ì ì 구ì±íìžì.
;
} else {
sectionContent = ì¹ì
ì ì°Ÿì ì ììµëë€.
;
}
return {sectionContent};
}
export default Dashboard;
ìŽ ìì ìì navigateTo
íšìë startTransition
ì ì¬ì©íì¬ ìí ì
ë°ìŽížë¥Œ ꞎêžíì§ ìì ê²ìŒë¡ íìí©ëë€. ìŽë Reactê° ì ì¹ì
ìœí
ìž ë¡ UI륌 ì
ë°ìŽížíë ê²ë³Žë€ ì¬ì©ì ì
ë ¥ ì²ëЬì ê°ì ë€ë¥ž ìì
ì ì°ì ìì륌 ëë€ë ê²ì ì믞í©ëë€. isPending
ê°ì ì íìŽ ìì§ ì§í ì€ìžì§ ì¬ë¶ë¥Œ ëíëŽë¯ë¡ ë¡ë© ìžëìŒìŽí°ë¥Œ íìí ì ììµëë€.
3. Suspense
Suspense
ë ìŽë€ ì¡°ê±ŽìŽ ì¶©ì¡±ë ëê¹ì§(ì: ë°ìŽí°ê° ë¡ëë ëê¹ì§) 컎í¬ëížì ë ëë§ì "ìŒì ì€ëš"í ì ìê² íŽì€ëë€. ìŽë ì£Œë¡ ë°ìŽí° ê°ì žì€êž°ì ê°ì ë¹ëêž° ìì
ì ì²ëЬíë ë° ì¬ì©ë©ëë€. ìŽë¥Œ íµíŽ ìëµì êž°ë€ëЬë ëì UIì ë¶ìì íê±°ë ê¹šì§ ë°ìŽí°ê° íìëë ê²ì ë°©ì§í©ëë€.
ì¬ì©ì íë¡í ì 볎륌 ë¡ëíë ê²ì ìê°íŽ ë³Žìžì. ë°ìŽí°ê° ë¡ëëë ëì ë¹ìŽ ìê±°ë ê¹šì§ íë¡íì íìíë ëì , Suspense
ë ë°ìŽí°ê° ì€ë¹ë ëê¹ì§ ë¡ë© ì€íŒëì ê°ì ë첎 ìœí
ìž (fallback)륌 íìí ë€ì, ì 첎 íë¡íì 볎ì¬ì£Œë ê²ìŒë¡ ë§€ëëœê² ì íí ì ììµëë€.
import React, { Suspense } from 'react';
// ë°ìŽí°ë¥Œ ë¡ëíë ëì ìŒì ì€ëšëë 컎í¬ëížë¥Œ ì뮬ë ìŽì
í©ëë€.
const ProfileDetails = React.lazy(() => import('./ProfileDetails'));
function ProfilePage() {
return (
íë¡í ë¡ë© ì€...}>
);
}
// ProfileDetails.jsì ë€ì곌 ê°ì ëŽì©ìŽ ìë€ê³ ê°ì í©ëë€:
// export default function ProfileDetails() {
// const data = useFetchProfileData(); // ë°ìŽí°ë¥Œ ê°ì žì€ë 컀ì€í
í
// return (
//
// {data.name}
// {data.bio}
//
// );
// }
export default ProfilePage;
ìŽ ìì ìì ProfileDetails
컎í¬ëížë Suspense
컎í¬ëížë¡ ê°ìžì ž ììµëë€. fallback
íë¡ì ProfileDetails
컎í¬ëížê° ë°ìŽí°ë¥Œ ë¡ëíë ëì íìí ëŽì©ì ì§ì í©ëë€. ìŽë UIì ë¶ìì í ë°ìŽí°ê° íìëë ê²ì ë°©ì§íê³ ë ë¶ëë¬ìŽ ë¡ë© 겜íì ì ê³µí©ëë€.
ìê° ë¶í ì ìí ëªšë² ì¬ë¡
ìê° ë¶í ì íšê³Œì ìŒë¡ íì©íë €ë©Ž ë€ì ëªšë² ì¬ë¡ë¥Œ ê³ ë €íìžì:
- ë³ëª© íì ìë³: íë¡íìŒë§ ë구륌 ì¬ì©íì¬ ì±ë¥ ë³ëª© íìì ìŒìŒí€ë 컎í¬ëížë¥Œ ìë³íìžì. ìŽë¬í 컎í¬ëížë¥Œ 뚌ì ìµì ííë ë° ì§ì€íìžì. React DevTools Profilerë íë¥í ì íì ëë€.
- ì ë°ìŽíž ì°ì ìì ì§ì : ìŽë€ ì ë°ìŽížê° ì€ìíê³ ìŽë€ ì ë°ìŽížë¥Œ ì§ì°ìí¬ ì ìëì§ ì ì€íê² ê³ ë €íìžì. ì¬ì©ì ì ë ¥ ë° êž°í ì€ìí ìížìì©ì ì°ì ìì륌 ëìžì.
- ë¶íìí 늬ë ëë§ ë°©ì§: 컎í¬ëížê° íìí ëë§ ëŠ¬ë ëë§ëëë¡ íìžì. ë¶íìí 늬ë ëë§ì ë°©ì§íêž° ìíŽ
React.memo
ë°useCallback
곌 ê°ì êž°ì ì ì¬ì©íìžì. - ì² ì í í ì€íž: ìê° ë¶í ìŽ íšê³Œì ìŒë¡ ì±ë¥ì í¥ììí€ê³ ìëì§ íìžíêž° ìíŽ ë€ìí êž°êž°ì ë€ížìí¬ ì¡°ê±Žìì ì í늬ìŒìŽì ì í ì€ížíìžì.
- ëŒìŽëžë¬ëЬ íëª íê² ì¬ì©: ëìì± ëªšëì ížíëì§ ìì ì ìë íì¬ ëŒìŽëžë¬ëЬì 죌ìíìžì. ì í늬ìŒìŽì ì íµí©íêž° ì ì ì² ì íê² í ì€ížíìžì. ì±ë¥ìŽ ì íë멎 ëìì ê³ ë €íìžì.
- ìž¡ì , ìž¡ì , ë ìž¡ì : ì êž°ì ìŒë¡ ì í늬ìŒìŽì ì ì±ë¥ì íë¡íìŒë§íìžì. ìê° ë¶í ì ë§ë³íµì¹ìœìŽ ìëëë€. ì€ì ë°ìŽí°ë¥Œ êž°ë°ìŒë¡ í ì ì€í ë¶ì곌 ìµì íê° íìí©ëë€. ê°ì ì ì졎íì§ ë§ìžì.
ë€ìí ì°ì ë¶ìŒì ìì
ìê° ë¶í ì ìŽì ì ë€ìí ì°ì ë¶ìŒìì íìží ì ììµëë€:
- ì ììê±°ë: ì ììê±°ë ì¬ìŽíž(ì: Alibabaë Amazon곌 ê°ì êžë¡ë² ë§ìŒíë ìŽì€)ìì ìê° ë¶í ì ëê·ëªš 칎íë¡ê·žì ë³µì¡í íí°ë§ì ë€ë£° ëìë ê²ì 결곌ì ì í ììž ì ë³Žê° ë¹ ë¥Žê² ë¡ëëëë¡ ë³Žì¥í ì ììµëë€. ìŽë í¹í ëëšìììë ìí늬칎ì ê°ìŽ ì°ê²°ìŽ ë늰 ì§ìì 몚ë°ìŒ êž°êž°ìì ì íìšì ëìŽê³ ê³ ê° ë§ì¡±ë륌 í¥ììíµëë€.
- ìì 믞ëìŽ: ìì 믞ëìŽ íë«íŒ(Facebook, Instagram, TikTok곌 ê°ìŽ ì ìžê³ì ìŒë¡ ì¬ì©ëë íë«íŒ)ìì ìê° ë¶í ì ëŽì€íŒëì ëêž ì¹ì ì ë ëë§ì ìµì ííì¬ ë¹ë²í ì ë°ìŽížì ëëì ë°ìŽí°ë¥Œ ì²ëЬí ëìë UIê° ë°ìì±ì ì ì§íëë¡ ë³Žì¥í ì ììµëë€. ìžëì ì¬ì©ìê° íŒë륌 ì€í¬ë¡€í ë ë ë¶ëë¬ìŽ ì€í¬ë¡€ë§ì 겜ííê² ë ê²ì ëë€.
- êžìµ ì í늬ìŒìŽì : êžìµ ì í늬ìŒìŽì (ì ëœìŽë ë¶ë¯žìì ì¬ì©ëë ìšëŒìž ê±°ë íë«íŒìŽë ë± í¹ ì± ë±)ìì ìê° ë¶í ì 죌ê°ë ê±°ë ëŽì곌 ê°ì ì€ìê° ë°ìŽí° ì ë°ìŽížê° ì§ì° ììŽ ë¶ëëœê² íìëëë¡ ë³Žì¥íì¬ ì¬ì©ììê² ê°ì¥ ìµì ì 볎륌 ì ê³µí ì ììµëë€.
- ê²ì: Reactê° ë³µì¡í ê²ìì 죌 ìì§ì ìë ì ìì§ë§, ê²ì UI(ë©ëŽ, ìžë²€í 늬 í멎)ì ì죌 ì¬ì©ë©ëë€. ìê° ë¶í ì ìŽë¬í ìží°íìŽì€ì ë°ìì±ì ì ì§íë ë° ëììŽ ëìŽ ì ìžê³ íë ìŽìŽë€ìŽ êž°êž°ì ìêŽììŽ ìíí 겜íì í ì ìëë¡ ë³Žì¥í©ëë€.
- êµì¡: E-ë¬ë íë«íŒì ìë¹í ìŽì ì ì»ì ì ììµëë€. ëìíìŽ ì íë ëìŽ ì§ìì íìë€ìŽ ì ìíë ëíí ì뮬ë ìŽì , ë¹ëì€ ê°ì, ì€ìê° íì êž°ë¥ìŽ ìë íë«íŒì ìê°íŽ ë³Žìžì. ìê° ë¶í ì UIì ë°ìì±ì 볎ì¥íì¬ íìë€ìŽ ëµëµí ì§ì°ìŽë ì€ëš ììŽ ì°žì¬í ì ìëë¡ íšìŒë¡ìš íìµ ì±ê³Œë¥Œ ëì ëë€.
íê³ ë° ê³ ë € ì¬í
ìê° ë¶í ì ìë¹í ìŽì ì ì ê³µíì§ë§, ê·ž íê³ì ì ì¬ì ìž ëšì ì ìžì§íë ê²ìŽ ì€ìí©ëë€:
- ë³µì¡ì± ìŠê°: ìê° ë¶í ì 구íí멎 ìœëë² ìŽì€ì ë³µì¡ì±ìŽ ì¶ê°ë ì ììŒë©°, Reactì ëŽë¶ ìë ë°©ìì ëí ë ê¹ì ìŽíŽê° íìí©ëë€.
- ëë²ê¹ ì ìŽë €ì: ìê° ë¶í 곌 êŽë šë 묞ì 륌 ëë²ê¹ íë ê²ì ì íµì ìž React ì í늬ìŒìŽì ì ëë²ê¹ íë ê²ë³Žë€ ë ìŽë €ìž ì ììµëë€. ë¹ëêž°ì ìž í¹ì± ë묞ì 묞ì ì ììžì ì¶ì íêž°ê° ë ìŽë €ìž ì ììµëë€.
- ížíì± ë¬žì : ìŒë¶ íì¬ ëŒìŽëžë¬ëЬë ëìì± ëªšëì ì벜íê² ížíëì§ ìì ì ììŒë©°, ìêž°ì¹ ìì ëììŽë ì±ë¥ 묞ì 륌 ìŒìŒí¬ ì ììµëë€.
- ë§ë³íµì¹ìœìŽ ìë: ìê° ë¶í ì ë€ë¥ž ì±ë¥ ìµì í êž°ì ì ë첎íë ê²ìŽ ìëëë€. 컎í¬ëíž ë° ë°ìŽí° 구조ì 귌볞ì ìž ì±ë¥ 묞ì 륌 íŽê²°íë ê²ìŽ ì€ìí©ëë€.
- ìê°ì ê²°íš ê°ë¥ì±: 겜ì°ì ë°ëŒ ìê° ë¶í ì ê¹ë¹¡ììŽë ë¶ìì í UI ì ë°ìŽížì ê°ì ìê°ì ê²°íšì ì ë°í ì ììµëë€. ìŽë¬í 묞ì 륌 ìë³íê³ íŽê²°íêž° ìíŽ ì í늬ìŒìŽì ì ì ì€íê² í ì€ížíë ê²ìŽ ì€ìí©ëë€.
ê²°ë¡
React ìê° ë¶í ì ë ëë§ ì°ì ìì륌 ìµì ííê³ ì í늬ìŒìŽì ì ë°ìì±ì í¥ììí€ë ê°ë ¥í ë구ì ëë€. ë ëë§ ìì ì ë ìì ë©ìŽëŠ¬ë¡ ëëê³ ì€ìí ì ë°ìŽížì ì°ì ìì륌 ë¶ì¬íšìŒë¡ìš ë ë¶ëëœê³ ìŠê±°ìŽ ì¬ì©ì 겜íì ë§ë€ ì ììµëë€. ìœê°ì ë³µì¡ì±ì ëì íì§ë§, í¹í ë³µì¡í ì í늬ìŒìŽì 곌 ì ì¬ì êž°êž°ìì ìê° ë¶í ì ìŽì ì ë žë ¥í ê°ì¹ê° ì¶©ë¶í©ëë€. ëìì± ëªšëì ìê° ë¶í ì íì ë°ìë€ì¬ ë°ìŽë UI ì±ë¥ì ì ê³µíê³ ì ìžê³ ì¬ì©ì륌 êž°ìê² íìžì.
Fiberì ëìì±ì ê°ë
ì ìŽíŽíê³ , useDeferredValue
ë° useTransition
곌 ê°ì í
ì íì©íë©°, ëªšë² ì¬ë¡ë¥Œ ë°ëŠìŒë¡ìš React ìê° ë¶í ì ì ì¬ë ¥ì ìµëí íì©íê³ ì§ì ìŒë¡ ì±ë¥ìŽ ë°ìŽëê³ ë§€ë ¥ì ìž êžë¡ë² ì¹ ì í늬ìŒìŽì
ì ë§ë€ ì ììµëë€. ìµìì 결곌륌 ì»êž° ìíŽ ì ê·Œ ë°©ìì ì§ìì ìŒë¡ ìž¡ì íê³ ê°ì íë ê²ì ìì§ ë§ìžì.