react memo vs use memo in react js 2025
React.memo vs useMemo in React JS 2025
In React, both React.memo
and useMemo
are optimization tools to prevent unnecessary rendering or computation, but they work differently and are used in different scenarios.
1. React.memo
– For Component Re-render Prevention
It is a higher-order component that prevents re-rendering of a functional component if its props have not changed.
// MyComponent.js
import React from "react";
const MyComponent = ({ name }) => {
console.log("Rendered MyComponent");
return Hello {name}
;
};
export default React.memo(MyComponent);
Now this component will only re-render if the name
prop changes.
2. useMemo
– For Expensive Calculation Memoization
It is a hook that memoizes the result of a computation, so it doesn’t get recalculated on every render unless dependencies change.
import React, { useMemo, useState } from "react";
function ExpensiveComponent({ number }) {
const [count, setCount] = useState(0);
const expensiveValue = useMemo(() => {
console.log("Calculating...");
let total = 0;
for (let i = 0; i < 100000000; i++) {
total += i;
}
return total + number;
}, [number]);
return (
Expensive Result: {expensiveValue}
);
}
🧠 Key Differences
React.memo
is used to memoize entire components.
useMemo
is used to memoize values or results of functions inside components.
React.memo
checks props; useMemo
uses dependency arrays.
✅ When to Use
- Use
React.memo
when a component gets re-rendered unnecessarily due to unchanged props.
- Use
useMemo
when there’s an expensive calculation or to avoid recreating functions/objects on each render.