
what is usememo ?
useMemo() is a React Hook that lets you memoize (cache) a computed value so it's not recalculated on every render unless its dependencies change.
Why use useMemo()?
By default, React re-runs all logic inside a component on every render. If you have expensive calculations, useMemo() helps optimize performance by remembering the last result.
Syntax
const memoizedValue = useMemo(() => {
// expensive calculation
return result;
}, [dependencies]);
- Runs the function only if dependencies change
- Returns a cached value
Example: Without useMemo() (slow on every render)
function SlowComponent({ number }) {
function slowSquare(n) {
console.log('Calculating...');
for (let i = 0; i < 1e8; i++) {} // slow loop
return n * n;
}
const result = slowSquare(number); // recalculates every render
return <h2>Square: {result}</h2>;
}
Example: With useMemo() (optimized)
import { useMemo } from 'react';
function OptimizedComponent({ number }) {
const result = useMemo(() => {
console.log('Calculating...');
for (let i = 0; i < 1e8; i++) {}
return number * number;
}, [number]); // recalculates only if `number` changes
return <h2>Square: {result}</h2>;
}
Real-Life Use Cases
- Expensive calculations (math, filters, large data)
- Derived data (e.g., filtered lists, totals)
- Performance optimization in lists, tables, charts
- Avoid unnecessary re-renders in child components
Summary
Feature | Description |
---|---|
useMemo() | Caches a value between renders |
Returns | The memoized result |
Reruns when | Any item in the dependency array changes |
Use for | Heavy calculations, performance boost |
Comments
Add new comment