useMemo 후크는 비용이 많이 드는 계산을 메모하여 애플리케이션 성능을 최적화하는 데 도움이 되는 내장 React 후크입니다. 모든 렌더링이 아닌 종속성이 변경될 때만 특정 계산이 다시 실행되도록 보장합니다. 이는 구성요소를 다시 렌더링할 때 불필요한 값 재계산을 방지하는 데 특히 유용할 수 있습니다.
useMemo는 비용이 많이 드는 함수 호출의 결과를 메모하고 종속성 중 하나가 변경된 경우에만 다시 계산하는 데 사용됩니다. 이렇게 하면 렌더링할 때마다 비용이 많이 드는 재계산을 방지하여 성능을 향상할 수 있습니다.
const memoizedValue = useMemo(() => expensiveFunction(param1, param2), [param1, param2]);
계산 속도가 느린 간단한 예를 생각해 보겠습니다.
import React, { useState, useMemo } from 'react'; const ExpensiveComponent = () => { const [count, setCount] = useState(0); const [toggle, setToggle] = useState(false); const calculateExpensiveValue = (num) => { console.log('Calculating expensive value...'); return num * 2; }; // Memoizing the expensive function result const memoizedValue = useMemo(() => calculateExpensiveValue(count), [count]); return ( <div> <h2>Expensive Calculation: {memoizedValue}</h2> <button onClick={() => setCount(count + 1)}>Increment Count</button> <button onClick={() => setToggle(!toggle)}>Toggle</button> </div> ); }; export default ExpensiveComponent;
설명:
여기서 왜 useMemo를 사용하나요?
useMemo는 다음과 같은 경우에 사용해야 합니다.
비용이 많이 드는 계산: 실행 비용이 많이 드는 함수나 연산이 있고 반드시 필요한 경우가 아니면 이를 다시 계산하지 않으려는 경우(예: 대규모 배열 또는 복잡한 계산 정렬)
불필요한 재렌더링 방지: 하위 구성 요소에 전달된 값을 메모하면 하위 구성 요소가 불필요하게 다시 렌더링되는 것을 방지할 수 있습니다. 메모된 값이 변경되지 않으면 React는 하위 구성 요소 렌더링을 건너뛸 수 있습니다.
성능 최적화: 특정 논리 부분이 특정 props나 상태에만 의존하는 계산을 포함하는 경우 useMemo는 종속성이 변경될 때만 함수가 실행되도록 보장하여 성능을 최적화할 수 있습니다.
예를 들어 정렬이나 필터링이 필요한 항목 목록을 렌더링한다고 가정해 보겠습니다. 이 작업에는 비용이 많이 듭니다.
const memoizedValue = useMemo(() => expensiveFunction(param1, param2), [param1, param2]);
비용이 많이 드는 계산의 결과인 prop을 허용하는 하위 구성 요소가 있는 경우 계산을 기억하고 결과를 prop으로 전달할 수 있습니다.
import React, { useState, useMemo } from 'react'; const ExpensiveComponent = () => { const [count, setCount] = useState(0); const [toggle, setToggle] = useState(false); const calculateExpensiveValue = (num) => { console.log('Calculating expensive value...'); return num * 2; }; // Memoizing the expensive function result const memoizedValue = useMemo(() => calculateExpensiveValue(count), [count]); return ( <div> <h2>Expensive Calculation: {memoizedValue}</h2> <button onClick={() => setCount(count + 1)}>Increment Count</button> <button onClick={() => setToggle(!toggle)}>Toggle</button> </div> ); }; export default ExpensiveComponent;
구성 요소에 상태 값이 여러 개 있지만 비용이 많이 드는 계산에 하나만 영향을 미치는 경우 관련 상태가 변경되지 않는 한 useMemo를 사용하여 해당 값을 다시 계산하지 않을 수 있습니다.
useMemo와 useCallback은 모두 메모에 사용되지만 용도는 다릅니다.
Hook | Purpose | Example Usage |
---|---|---|
useMemo | Memoizes the result of a function call or calculation | Memoizing a computed value |
useCallback | Memoizes the function itself | Preventing the creation of a new function on each render |
다음은 useMemo를 사용하여 정렬된 목록을 메모하는 예입니다.
const memoizedValue = useMemo(() => expensiveFunction(param1, param2), [param1, param2]);
useMemo 후크는 React 애플리케이션의 성능을 최적화하는 데 필수적인 도구입니다. 이는 비용이 많이 드는 계산이 필요한 경우에만 수행되도록 보장하여 구성 요소를 더욱 효율적으로 만듭니다. 하지만 과도하게 사용하면 불필요한 복잡성과 잠재적인 성능 저하가 발생할 수 있으므로 신중하게 사용해야 합니다.
위 내용은 Reacts useMemo Hook으로 성능 최적화: 값비싼 계산 메모하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!