ν₯μλ μ±λ₯ λͺ¨λν°λ§ λ° λΆμμ μν React νΈλμ§μ μΆμ μ’ ν© κ°μ΄λ. React μ ν리μΌμ΄μ μμ λ³λͺ© νμμ μλ³νκ³ , νΈλμ§μ μ μ΅μ ννλ©°, μ¬μ©μ κ²½νμ κ°μ νλ λ°©λ²μ μμ보μΈμ.
React νΈλμ§μ μΆμ : μ±λ₯ λͺ¨λν°λ§ λ° λΆμ
νλ μΉ μ ν리μΌμ΄μ μμ λΆλλ½κ³ λ°μμ±μ΄ μ’μ μ¬μ©μ μΈν°νμ΄μ€λ λ§€μ° μ€μν©λλ€. UIλ₯Ό ꡬμΆνκΈ° μν μΈκΈ° μλ μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬μΈ Reactλ νΈλμ§μ μ μμ±νκΈ° μν κ°λ ₯ν λ©μ»€λμ¦μ μ 곡ν©λλ€. κ·Έλ¬λ 볡μ‘ν νΈλμ§μ μ λλλ‘ μ±λ₯ λ³λͺ© νμμ μ λ°ν μ μμ΅λλ€. μ΄λ¬ν λ³λͺ© νμμ μ΄ν΄νκ³ ν΄κ²°νλ κ²μ μνν μ¬μ©μ κ²½νμ μ 곡νλ λ° λ§€μ° μ€μν©λλ€. μ΄ μ’ ν© κ°μ΄λμμλ React νΈλμ§μ μ μ±λ₯μ λͺ¨λν°λ§νκ³ λΆμνμ¬ μ΅μ ν μμμ μλ³νκ³ μ ν리μΌμ΄μ μ μ λ°μ μΈ λ°μμ±μ κ°μ νλ λ° λμμ΄ λλ κ°λ ₯ν κΈ°μ μΈ React νΈλμ§μ μΆμ μ λν΄ μμΈν μμλ΄ λλ€.
React νΈλμ§μ μΆμ μ΄λ 무μμΈκ°?
React νΈλμ§μ μΆμ μ React μ ν리μΌμ΄μ λ΄μ μν μ ν μ±λ₯μ μΈ‘μ νκ³ λΆμνλ λ° μ¬μ©λλ λ°©λ²μ λλ€. μ¬κΈ°μλ μ½λλ₯Ό κ³μΈ‘νμ¬ λ λλ§ μκ°, μ»΄ν¬λνΈ μ λ°μ΄νΈ, λ€νΈμν¬ μμ²κ³Ό κ°μ νΈλμ§μ μ€ μ£Όμ λ©νΈλ¦μ μΆμ νλ μμ μ΄ ν¬ν¨λ©λλ€. μ΄ μμΈν μ 보λ κ°λ°μκ° μ±λ₯ λ¬Έμ λ₯Ό μ νν μ°Ύμλ΄κ³ λ λΆλλ½κ³ ν¨μ¨μ μΈ νΈλμ§μ μ μν΄ μ½λλ₯Ό μ΅μ νν μ μλλ‘ ν΄μ€λλ€.
κΈ°μ‘΄μ μ±λ₯ λͺ¨λν°λ§μ μ’ μ’ μ 체 λ λλ§ μκ°μ μ΄μ μ λ§μΆλλ°, μ΄λ 볡μ‘ν UI νΈλμ§μ μ λ€λ£° λ λΆμΆ©λΆν μ μμ΅λλ€. νΈλμ§μ μΆμ μ μ¬μ©νλ©΄ νΉμ νΈλμ§μ μ νλνμ¬ λ΄λΆμμ μ νν λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§ μ΄ν΄ν μ μμΌλ©°, λͺ©νμ λ§λ μ΅μ νλ₯Ό μν κ·μ€ν ν΅μ°°λ ₯μ μ 곡ν©λλ€.
νΈλμ§μ μΆμ μ΄ μ€μν μ΄μ
νΈλμ§μ μΆμ μ μ¬λ¬ κ°μ§ μ΄μ λ‘ μ€μν©λλ€:
- ν₯μλ μ¬μ©μ κ²½ν: νΈλμ§μ μ μ΅μ νν¨μΌλ‘μ¨ λ μ λμ μ΄κ³ λ°μμ±μ΄ μ’μ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό λ§λ€μ΄ μ λ°μ μΈ μ¬μ©μ κ²½νμ κ°μ ν μ μμ΅λλ€.
- μ±λ₯ μ΅μ ν: νΈλμ§μ μ μ±λ₯ λ³λͺ© νμμ μλ³νκ³ ν΄κ²°νλ©΄ React μ ν리μΌμ΄μ μ μ λ°μ μΈ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
- μμ μλΉ κ°μ: ν¨μ¨μ μΈ νΈλμ§μ μ λ μ μ μμμ μλΉνλ―λ‘ λͺ¨λ°μΌ κΈ°κΈ°μμ λ°°ν°λ¦¬ μλͺ μ ν₯μμν€κ³ μλ² λΆνλ₯Ό μ€μΌ μ μμ΅λλ€.
- λ λΉ λ₯Έ μνΈμμ© μκ°(TTI): μ΅μ νλ νΈλμ§μ μ λ λΉ λ₯Έ TTIμ κΈ°μ¬νμ¬ μ¬μ©μκ° μ ν리μΌμ΄μ μ λ 빨리 μ¬μ©ν μ μκ² ν©λλ€.
- λλ²κΉ κ°ν: νΈλμ§μ μΆμ μ νΈλμ§μ μ μ€ν νλ¦μ λν μμΈν μ 보λ₯Ό μ 곡νμ¬ μ±λ₯ λ¬Έμ λ₯Ό λ μ½κ² λλ²κΉ ν μ μκ² ν΄μ€λλ€.
React νΈλμ§μ μΆμ μ μν λꡬ λ° κΈ°μ
React νΈλμ§μ μΆμ μλ μ¬λ¬ λꡬμ κΈ°μ μ μ¬μ©ν μ μμ΅λλ€. λ€μμ λͺ κ°μ§ μΈκΈ° μλ μ΅μ μ λν κ°μμ λλ€:
1. React νλ‘νμΌλ¬
React κ°λ°μ λꡬμ λ΄μ₯λ λκ΅¬μΈ React νλ‘νμΌλ¬λ μ ν리μΌμ΄μ μ μ±λ₯μ μ΄ν΄νκΈ° μν νλ₯ν μΆλ°μ μ λλ€. μΌμ κΈ°κ° λμ μ±λ₯ λ°μ΄ν°λ₯Ό κΈ°λ‘νμ¬ μ΄λ€ μ»΄ν¬λνΈκ° μμ£Ό λ λλ§λκ³ κ°μ₯ λ§μ μκ°μ μμνλμ§μ λν ν΅μ°°λ ₯μ μ 곡ν©λλ€.
React νλ‘νμΌλ¬ μ¬μ©νκΈ°:
- λΈλΌμ°μ μμ React κ°λ°μ λꡬλ₯Ό μ½λλ€.
- "Profiler" νμΌλ‘ μ΄λν©λλ€.
- "Record" λ²νΌμ ν΄λ¦νμ¬ μ ν리μΌμ΄μ νλ‘νμΌλ§μ μμν©λλ€.
- μ ν리μΌμ΄μ κ³Ό μνΈμμ©νμ¬ λΆμνλ €λ νΈλμ§μ μ νΈλ¦¬κ±°ν©λλ€.
- "Stop" λ²νΌμ ν΄λ¦νμ¬ νλ‘νμΌλ§ μΈμ μ μ’ λ£ν©λλ€.
- κ²°κ³Όλ₯Ό λΆμνκ³ , "Flamegraph" λ° "Ranked" μ°¨νΈμ μ΄μ μ λ§μΆ° μ±λ₯ λ³λͺ© νμμ μλ³ν©λλ€.
νλ μκ·Έλν(Flamegraph)λ λ λλ§ μ€ νΈμΆ μ€νμ μκ°μ μΌλ‘ λνλ΄μ΄ κ°μ₯ λ§μ μκ°μ μλΉνλ ν¨μλ₯Ό μλ³ν μ μκ² ν΄μ€λλ€. λν¬λ(Ranked) μ°¨νΈλ λ λλ§ μκ° μμλλ‘ μ»΄ν¬λνΈλ₯Ό λμ΄νμ¬ κ°μ₯ μ±λ₯ μ§μ½μ μΈ μ»΄ν¬λνΈλ₯Ό μ½κ² μλ³ν μ μκ² ν©λλ€.
μμ: νμ΄λμΈ μ λλ©μ΄μ μ΄ μλ λͺ¨λ¬ μ»΄ν¬λνΈκ° μλ€κ³ κ°μ ν΄ λ΄ μλ€. React νλ‘νμΌλ¬λ₯Ό μ¬μ©νλ©΄ κ³Όλν 리λ λλ§μΌλ‘ μΈν΄ μ λλ©μ΄μ μ΄ μλΉν μ±λ₯ μ νλ₯Ό μ λ°νκ³ μμμ λ°κ²¬ν μ μμ΅λλ€. μ΄ ν΅μ°°λ ₯μ λ°νμΌλ‘ μ λλ©μ΄μ λ‘μ§μ μ‘°μ¬νκ³ λ λμ μ±λ₯μ μν΄ μ΅μ ννκ² λ κ²μ λλ€.
2. Chrome κ°λ°μ λꡬ μ±λ₯ ν
Chrome κ°λ°μ λꡬμ μ±λ₯ νμ CPU μ¬μ©λ, λ©λͺ¨λ¦¬ ν λΉ, λ€νΈμν¬ νλμ ν¬ν¨νμ¬ μ ν리μΌμ΄μ μ±λ₯μ λν ν¬κ΄μ μΈ λ·°λ₯Ό μ 곡ν©λλ€. μ΄λ μ₯κΈ° μ€ν μλ°μ€ν¬λ¦½νΈ μμ μ΄λ λΉν¨μ¨μ μΈ λ€νΈμν¬ μμ²κ³Ό κ°μ΄ Reactμ κ΅νλμ§ μλ μ±λ₯ λ³λͺ© νμμ μλ³νλ λ° κ°λ ₯ν λꡬμ λλ€.
Chrome κ°λ°μ λꡬ μ±λ₯ ν μ¬μ©νκΈ°:
- Chrome κ°λ°μ λꡬλ₯Ό μ½λλ€ (λ³΄ν΅ F12 ν€λ₯Ό λλ¦).
- "Performance" νμΌλ‘ μ΄λν©λλ€.
- "Record" λ²νΌμ ν΄λ¦νμ¬ κΈ°λ‘μ μμν©λλ€.
- μ ν리μΌμ΄μ κ³Ό μνΈμμ©νμ¬ λΆμνλ €λ νΈλμ§μ μ νΈλ¦¬κ±°ν©λλ€.
- "Stop" λ²νΌμ ν΄λ¦νμ¬ κΈ°λ‘μ μ’ λ£ν©λλ€.
- κ²°κ³Όλ₯Ό λΆμνκ³ , "Main" μ€λ λμ μ΄μ μ λ§μΆ° μλ°μ€ν¬λ¦½νΈ μ½λμ μ±λ₯ λ³λͺ© νμμ μλ³ν©λλ€.
μ±λ₯ νμ μ¬μ©νλ©΄ νΉμ μκ° κ°κ²©μ νλνμ¬ κ°λ³ νΈλμ§μ μ μ±λ₯μ μ½κ² λΆμν μ μμ΅λλ€. λν "Call Tree" λ° "Bottom-Up" λ·°λ₯Ό μ¬μ©νμ¬ κ°μ₯ λ§μ μκ°μ μλΉνλ ν¨μλ₯Ό μλ³ν μ μμ΅λλ€.
μμ: APIμμ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ νμ΄μ§ μ νμ΄ μλ€κ³ κ°μ ν΄ λ΄ μλ€. Chrome κ°λ°μ λꡬ μ±λ₯ νμ μ¬μ©νλ©΄ λ€νΈμν¬ μμ²μ μ€λ μκ°μ΄ κ±Έλ € μ νμ΄ μ§μ°λλ κ²μ λ°κ²¬ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ APIμ μ±λ₯μ μ‘°μ¬νκ³ λ°μ΄ν°λ₯Ό μΊμ±νκ±°λ λ ν¨μ¨μ μΈ λ°μ΄ν° μ μ‘ νμμ μ¬μ©νμ¬ μμ²μ μ΅μ ννλ κ²μ κ³ λ €νκ² λ κ²μ λλ€.
3. μ±λ₯ λͺ¨λν°λ§ λΌμ΄λΈλ¬λ¦¬
React μ ν리μΌμ΄μ μ ν΅ν©νμ¬ μ€μκ° μ±λ₯ λ°μ΄ν°μ ν΅μ°°λ ₯μ μ 곡ν μ μλ μ¬λ¬ μ±λ₯ λͺ¨λν°λ§ λΌμ΄λΈλ¬λ¦¬κ° μμ΅λλ€. μ΄λ¬ν λΌμ΄λΈλ¬λ¦¬λ μ’ μ’ μ€λ₯ μΆμ , μ¬μ©μ μΈμ κΈ°λ‘, μ±λ₯ λ©νΈλ¦ λμ보λμ κ°μ κΈ°λ₯μ μ 곡ν©λλ€.
μΈκΈ° μλ μ±λ₯ λͺ¨λν°λ§ λΌμ΄λΈλ¬λ¦¬μ μλ λ€μκ³Ό κ°μ΅λλ€:
- Sentry: ν¬κ΄μ μΈ μ€λ₯ μΆμ λ° μ±λ₯ λͺ¨λν°λ§ νλ«νΌμ λλ€.
- New Relic: μΉ μ ν리μΌμ΄μ μ λν μμΈν μ±λ₯ ν΅μ°°λ ₯μ μ 곡νλ νμ€ν κ΄μ°° κ°λ₯μ± νλ«νΌμ λλ€.
- Raygun: μ¬μ©μ λͺ¨λν°λ§ λ° μ€λ₯ μΆμ μ루μ μ λλ€.
- LogRocket: μΈμ 리νλ μ΄ λ° μ€λ₯ μΆμ νλ«νΌμ λλ€.
μ΄λ¬ν λΌμ΄λΈλ¬λ¦¬λ νΉμ νΈλμ§μ μ μΆμ νκ³ λ λλ§ μκ°, μ»΄ν¬λνΈ μ λ°μ΄νΈ, λ€νΈμν¬ μμ²κ³Ό κ°μ μ±λ₯ λ°μ΄ν°λ₯Ό μμ§νλλ‘ κ΅¬μ±ν μ μμ΅λλ€. κ·Έλ° λ€μ λ°μ΄ν°λ₯Ό λΆμνμ¬ μ±λ₯ λ³λͺ© νμμ μλ³νκ³ μ½λλ₯Ό μ΅μ νν μ μμ΅λλ€.
4. μ¬μ©μ μ§μ κ³μΈ‘
λ μΈλ°ν νΈλμ§μ μΆμ μ μ΄λ₯Ό μν΄, Reactμ μλͺ μ£ΌκΈ° λ©μλμ λ€λ₯Έ APIλ₯Ό μ¬μ©νμ¬ μ¬μ©μ μ§μ κ³μΈ‘μ ꡬνν μ μμ΅λλ€. μ¬κΈ°μλ νΈλμ§μ μ€ μ£Όμ λ©νΈλ¦μ μΆμ νκΈ° μν΄ μ»΄ν¬λνΈμ μ½λλ₯Ό μΆκ°νλ μμ μ΄ ν¬ν¨λ©λλ€.
μμ:
import React, { useState, useEffect, useRef } from 'react';
function MyComponent() {
const [isVisible, setIsVisible] = useState(false);
const startTime = useRef(null);
useEffect(() => {
if (isVisible) {
startTime.current = performance.now();
}
}, [isVisible]);
useEffect(() => {
if (!isVisible && startTime.current) {
const endTime = performance.now();
const transitionTime = endTime - startTime.current;
console.log(`νΈλμ§μ
μκ°: ${transitionTime}ms`);
// transitionTimeμ λΆμ μλΉμ€λ‘ μ μ‘
}
}, [isVisible]);
const handleToggleVisibility = () => {
setIsVisible(!isVisible);
};
return (
{isVisible && (
μ΄ μ»΄ν¬λνΈλ 보μ
λλ€.
)}
);
}
export default MyComponent;
μ΄ μμ μμλ performance.now() APIλ₯Ό μ¬μ©νμ¬ μ»΄ν¬λνΈκ° νμλκ³ μ¬λΌμ§λ λ° κ±Έλ¦¬λ μκ°μ μΈ‘μ ν©λλ€. κ·Έλ° λ€μ νΈλμ§μ
μκ°μ μ½μμ κΈ°λ‘λκ³ μΆκ° λΆμμ μν΄ λΆμ μλΉμ€λ‘ μ μ‘λ μ μμ΅λλ€.
React νΈλμ§μ μ΅μ νλ₯Ό μν λͺ¨λ² μ¬λ‘
React νΈλμ§μ μμ μ±λ₯ λ³λͺ© νμμ μλ³ν νμλ μ΄λ₯Ό μ΅μ ννκΈ° μν΄ λͺ κ°μ§ λͺ¨λ² μ¬λ‘λ₯Ό μ μ©ν μ μμ΅λλ€:
1. λΆνμν 리λ λλ§ μ΅μν
리λ λλ§μ μ’ μ’ React μ ν리μΌμ΄μ μμ μ±λ₯ λ¬Έμ μ μ£Όμ μμΈμ λλ€. 리λ λλ§μ μ΅μννκΈ° μν΄ λ€μκ³Ό κ°μ κΈ°μ μ μ¬μ©ν μ μμ΅λλ€:
- React.memo: ν¨μν μ»΄ν¬λνΈλ₯Ό λ©λͺ¨μ΄μ§(memoizing)νλ κ³ μ°¨ μ»΄ν¬λνΈλ‘, propsκ° λ³κ²½λμ§ μμΌλ©΄ 리λ λλ§μ λ°©μ§ν©λλ€.
- PureComponent: ν΄λμ€ μ»΄ν¬λνΈμ κΈ°λ³Έ ν΄λμ€λ‘, propsμ stateμ μμ λΉκ΅λ₯Ό ꡬννμ¬ μ»΄ν¬λνΈκ° 리λ λλ§ν΄μΌ νλμ§ μ¬λΆλ₯Ό κ²°μ ν©λλ€.
- useMemo: κ³μ° κ²°κ³Όλ₯Ό λ©λͺ¨μ΄μ§νλ ν μΌλ‘, μμ‘΄μ±μ΄ λ³κ²½λμ§ μλ ν μ¬κ³μ°μ λ°©μ§ν©λλ€.
- useCallback: ν¨μλ₯Ό λ©λͺ¨μ΄μ§νλ ν μΌλ‘, λͺ¨λ λ λλ§μμ ν¨μκ° λ€μ μμ±λλ κ²μ λ°©μ§ν©λλ€.
μμ: ν° κ°μ²΄λ₯Ό propμΌλ‘ λ°λ μ»΄ν¬λνΈκ° μλ κ²½μ°, React.memoλ₯Ό μ¬μ©νμ¬ κ°μ²΄μ μμ±μ΄ μ€μ λ‘ λ³κ²½λμ§ μλ ν 리λ λλ§λλ κ²μ λ°©μ§ν μ μμ΅λλ€. μ΄λ νΉν μ»΄ν¬λνΈ λ λλ§ λΉμ©μ΄ λΉμΌ κ²½μ° μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
2. μ λλ©μ΄μ λ‘μ§ μ΅μ ν
μ λλ©μ΄μ λ‘μ§ λν μ±λ₯ λ¬Έμ μ μ€μν μμΈμ΄ λ μ μμ΅λλ€. μ λλ©μ΄μ μ μ΅μ ννκΈ° μν΄ λ€μκ³Ό κ°μ κΈ°μ μ μ¬μ©ν μ μμ΅λλ€:
- CSS νΈλμ§μ λ° μ λλ©μ΄μ : κ°λ₯ν λλ§λ€ μλ°μ€ν¬λ¦½νΈ κΈ°λ° μ λλ©μ΄μ λμ CSS νΈλμ§μ λ° μ λλ©μ΄μ μ μ¬μ©νμΈμ. μΌλ°μ μΌλ‘ μ±λ₯μ΄ λ μ’μ΅λλ€.
- νλμ¨μ΄ κ°μ:
transformλ°opacityμ κ°μ CSS μμ±μ μ¬μ©νμ¬ νλμ¨μ΄ κ°μμ νΈλ¦¬κ±°νλ©΄ μ λλ©μ΄μ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. - RequestAnimationFrame:
requestAnimationFrameμ μ¬μ©νμ¬ μ λλ©μ΄μ μ μ€μΌμ€λ§νμ¬ λΈλΌμ°μ μ λ λλ§ νμ΄νλΌμΈκ³Ό λκΈ°νλλλ‘ ν©λλ€.
μμ: μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ¬ μμμ μμΉλ₯Ό μ λλ©μ΄μ νλ λμ , CSS νΈλμ§μ μ μ¬μ©νμ¬ μκ° κ²½κ³Όμ λ°λΌ μμΉλ₯Ό λΆλλ½κ² λ³κ²½ν μ μμ΅λλ€. μ΄λ κ² νλ©΄ μ λλ©μ΄μ μ λΈλΌμ°μ μ λ λλ§ μμ§μ μ€νλ‘λνμ¬ λ μ±λ₯μ΄ μ’μ μ λλ©μ΄μ μ λ§λ€ μ μμ΅λλ€.
3. DOM μ‘°μ μ€μ΄κΈ°
DOM μ‘°μμ νΉν μμ£Ό μνλ λ λΉμ©μ΄ λ§μ΄ λ€ μ μμ΅λλ€. DOM μ‘°μμ μ€μ΄κΈ° μν΄ λ€μκ³Ό κ°μ κΈ°μ μ μ¬μ©ν μ μμ΅λλ€:
- κ°μ DOM: Reactμ κ°μ DOMμ μ λ°μ΄νΈλ₯Ό μΌκ΄ μ²λ¦¬νκ³ ν¨μ¨μ μΌλ‘ μ μ©νμ¬ DOM μ‘°μμ μ΅μννλ λ° λμμ΄ λ©λλ€.
- DocumentFragment:
DocumentFragmentλ₯Ό μ¬μ©νμ¬ DOM μμλ₯Ό μ€μ DOMμ μΆκ°νκΈ° μ μ λ©λͺ¨λ¦¬μμ μμ±νκ³ μ‘°μν©λλ€. - ν¨μ¨μ μΈ μλ£ κ΅¬μ‘°: λ°°μ΄ λ° κ°μ²΄μ κ°μ ν¨μ¨μ μΈ μλ£ κ΅¬μ‘°λ₯Ό μ¬μ©νμ¬ μμ± λ° μ λ°μ΄νΈν΄μΌ νλ DOM μμμ μλ₯Ό μ΅μνν©λλ€.
μμ: νλͺ© λͺ©λ‘μ μ
λ°μ΄νΈν λ DocumentFragmentλ₯Ό μ¬μ©νμ¬ μ λͺ©λ‘ νλͺ©μ λ©λͺ¨λ¦¬μ μμ±ν λ€μ μ 체 νλκ·Έλ¨ΌνΈλ₯Ό ν λ²μ DOMμ μΆκ°ν μ μμ΅λλ€. μ΄λ κ² νλ©΄ DOM μ‘°μ νμκ° μ€μ΄λ€κ³ μ±λ₯μ΄ ν₯μλ©λλ€.
4. λ€νΈμν¬ μμ² μ΅μ ν
λ€νΈμν¬ μμ²μ APIμμ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ νΈλμ§μ μμ μ£Όμ λ³λͺ© νμμ΄ λ μ μμ΅λλ€. λ€νΈμν¬ μμ²μ μ΅μ ννκΈ° μν΄ λ€μκ³Ό κ°μ κΈ°μ μ μ¬μ©ν μ μμ΅λλ€:
- μΊμ±: μμ£Ό μ‘μΈμ€νλ λ°μ΄ν°λ₯Ό μΊμνμ¬ λ€νΈμν¬ μμ² μλ₯Ό μ€μ λλ€.
- μμΆ: λ€νΈμν¬λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό 보λ΄κΈ° μ μ μμΆνμ¬ μ μ‘ν΄μΌ νλ λ°μ΄ν° μμ μ€μ λλ€.
- μ½λ λΆν : μ½λλ₯Ό νμμ λ°λΌ λ‘λν μ μλ μμ μ²ν¬λ‘ λΆν νμ¬ μ ν리μΌμ΄μ μ μ΄κΈ° λ‘λ μκ°μ μ€μ λλ€.
- μ§μ° λ‘λ©: μ΄λ―Έμ§ λ° λΉλμ€μ κ°μ 리μμ€λ₯Ό νμν λλ§ λ‘λνμ¬ μ ν리μΌμ΄μ μ μ΄κΈ° λ‘λ μκ°μ μ€μ λλ€.
μμ: APIμμ λ°μ΄ν°λ₯Ό κ°μ Έμ¬ λ μΊμ± λ©μ»€λμ¦μ μ¬μ©νμ¬ λΈλΌμ°μ μ λ‘컬 μ€ν 리μ§λ μΈμ μ€ν 리μ§μ λ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΅λλ€. μ΄λ κ² νλ©΄ λμΌν μμ²μ μ¬λ¬ λ² ν νμκ° μμ΄ μ±λ₯μ΄ ν₯μλ©λλ€.
5. μ¬λ°λ₯Έ νΈλμ§μ λΌμ΄λΈλ¬λ¦¬ μ¬μ©
λΆλλ½κ³ μ±λ₯μ΄ μ’μ νΈλμ§μ μ λ§λλ λ° λμμ΄ λλ μ¬λ¬ React νΈλμ§μ λΌμ΄λΈλ¬λ¦¬κ° μμ΅λλ€. λͺ κ°μ§ μΈκΈ° μλ μ΅μ μ λ€μκ³Ό κ°μ΅λλ€:
- React Transition Group: μ»΄ν¬λνΈ νΈλμ§μ μ κ΄λ¦¬νκΈ° μν μ μμ€ APIμ λλ€.
- React Spring: λΆλλ½κ³ μμ°μ€λ¬μ΄ μ λλ©μ΄μ μ μ 곡νλ μ€νλ§ κΈ°λ° μ λλ©μ΄μ λΌμ΄λΈλ¬λ¦¬μ λλ€.
- Framer Motion: Reactλ₯Ό μν νλ‘λμ μ€λΉκ° λ λͺ¨μ λΌμ΄λΈλ¬λ¦¬μ λλ€.
μ¬λ°λ₯Έ νΈλμ§μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ ννλ©΄ νΈλμ§μ μμ± λ° μ΅μ ν νλ‘μΈμ€λ₯Ό ν¬κ² λ¨μνν μ μμ΅λλ€. μ ν μ λΌμ΄λΈλ¬λ¦¬μ κΈ°λ₯, μ±λ₯ νΉμ± λ° μ¬μ© μ©μ΄μ±μ κ³ λ €νμΈμ.
μ€μ μ μ© μ¬λ‘
React νΈλμ§μ μΆμ μ μ¬μ©νμ¬ React μ ν리μΌμ΄μ μ μ±λ₯μ κ°μ νλ μ€μ μ¬λ‘λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
1. μ μμκ±°λ μν νμ΄μ§
μ μμκ±°λ μν νμ΄μ§λ μΌλ°μ μΌλ‘ μν μμΈ μ 보 νμ, μ₯λ°κ΅¬λμ μν μΆκ°, λ€λ₯Έ μν λ·° κ° μ΄λκ³Ό κ°μ μ¬λ¬ νΈλμ§μ μ ν¬ν¨ν©λλ€. React νΈλμ§μ μΆμ μ μ¬μ©νλ©΄ μ΄λ―Έμ§ ν¬κΈ°κ° 컀μ λ€λ₯Έ μν μ΄λ―Έμ§ κ°μ μ νμ΄ μ±λ₯ λ³λͺ© νμμ μΌμΌν€λ κ²μ λ°κ²¬ν μ μμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μ΄λ―Έμ§λ₯Ό μμΆνκ±°λ λ ν¨μ¨μ μΈ μ΄λ―Έμ§ νμμ μ¬μ©νμ¬ μ΄λ―Έμ§λ₯Ό μ΅μ νν μ μμ΅λλ€. λν μ΄λ―Έμ§κ° λ·°ν¬νΈμ λ³΄μΌ λλ§ λ‘λλλλ‘ μ§μ° λ‘λ©μ ꡬνν μλ μμ΅λλ€.
2. μμ λ―Έλμ΄ νΌλ
μμ λ―Έλμ΄ νΌλλ μΌλ°μ μΌλ‘ μ κ²μλ¬Ό νμ, λ λ§μ μ½ν μΈ λ‘λ, λ€λ₯Έ νλ‘ν κ° μ΄λκ³Ό κ°μ μ¦μ μ λ°μ΄νΈμ νΈλμ§μ μ ν¬ν¨ν©λλ€. React νΈλμ§μ μΆμ μ μ¬μ©νλ©΄ λ λ§μ μ½ν μΈ λ₯Ό λ‘λν λ μ λ°μ΄νΈν΄μΌ νλ DOM μμκ° λ§μ μ ν μ μ±λ₯ λ³λͺ© νμμ΄ λ°μνλ κ²μ λ°κ²¬ν μ μμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ κ°μνλ₯Ό ꡬννμ¬ νΌλμμ 보μ΄λ νλͺ©λ§ λ λλ§ν μ μμ΅λλ€. λν λ λλ§ λ‘μ§μ μ΅μ ννμ¬ DOM μ‘°μ νμλ₯Ό μ΅μνν μλ μμ΅λλ€.
3. λμ보λ μ ν리μΌμ΄μ
λμ보λ μ ν리μΌμ΄μ μ μΌλ°μ μΌλ‘ μ°¨νΈ μ λ°μ΄νΈ, μλ¦Ό νμ, λ€λ₯Έ λμ보λ κ° μ΄λκ³Ό κ°μ 볡μ‘ν λ°μ΄ν° μκ°ν λ° νΈλμ§μ μ ν¬ν¨ν©λλ€. React νΈλμ§μ μΆμ μ μ¬μ©νλ©΄ μ°¨νΈλ₯Ό μ λ°μ΄νΈν λ μνν΄μΌ νλ 볡μ‘ν κ³μ°μΌλ‘ μΈν΄ μ ν μ μ±λ₯ λ³λͺ© νμμ΄ λ°μνλ κ²μ λ°κ²¬ν μ μμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λ©λͺ¨μ΄μ μ΄μ μ΄λ μΉ μ컀λ₯Ό μ¬μ©νμ¬ κ³μ°μ μ΅μ νν μ μμ΅λλ€. λν λ μ±λ₯μ΄ μ’μ μ°¨νΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν μλ μμ΅λλ€.
κ²°λ‘
React νΈλμ§μ μΆμ μ React νΈλμ§μ μ μ±λ₯μ λͺ¨λν°λ§νκ³ λΆμνλ λ° μ μ©ν κΈ°μ μ λλ€. React νλ‘νμΌλ¬, Chrome κ°λ°μ λꡬ μ±λ₯ ν, μ±λ₯ λͺ¨λν°λ§ λΌμ΄λΈλ¬λ¦¬μ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ±λ₯ λ³λͺ© νμμ μλ³νκ³ λ λΆλλ½κ³ ν¨μ¨μ μΈ νΈλμ§μ μ μν΄ μ½λλ₯Ό μ΅μ νν μ μμ΅λλ€. μ΄ κ°μ΄λμ μ€λͺ λ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ μννκ³ λ°μμ±μ΄ μ’μ μ¬μ©μ κ²½νμ μ 곡νλ React μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€.
νΉν μ ν리μΌμ΄μ μ΄ λ³΅μ‘ν΄μ§μλ‘ React νΈλμ§μ μ μ±λ₯μ μ§μμ μΌλ‘ λͺ¨λν°λ§νκ³ λΆμνλ κ²μ μμ§ λ§μΈμ. μ±λ₯ λ¬Έμ λ₯Ό μ¬μ μ ν΄κ²°ν¨μΌλ‘μ¨ μ ν리μΌμ΄μ μ΄ λ°μμ±μ μ μ§νκ³ μ μΈκ³ μ¬μ©μμκ² νλ₯ν μ¬μ©μ κ²½νμ μ 곡νλλ‘ λ³΄μ₯ν μ μμ΅λλ€. CI/CD νμ΄νλΌμΈμ μΌλΆλ‘ μλνλ μ±λ₯ ν μ€νΈλ₯Ό μ¬μ©νμ¬ κ°λ° νλ‘μΈμ€ μ΄κΈ°μ μ±λ₯ μ νλ₯Ό ν¬μ°©νλ κ²μ κ³ λ €ν΄λ³΄μΈμ.