usememo

what is usememo ?

  • Profile picture of Mcs
  • by Mcs July 3, 2025

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]);

  1. Runs the function only if dependencies change
  2. 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

  1. Expensive calculations (math, filters, large data)
  2. Derived data (e.g., filtered lists, totals)
  3. Performance optimization in lists, tables, charts
  4. Avoid unnecessary re-renders in child components

Summary

FeatureDescription
useMemo()Caches a value between renders
ReturnsThe memoized result
Reruns whenAny item in the dependency array changes
Use forHeavy calculations, performance boost

Comments

Add new comment

Restricted HTML

  • Allowed HTML tags: <br> <p> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <cite> <dl> <dt> <dd> <a hreflang href> <blockquote cite> <ul type> <ol type start> <strong> <em> <code> <li>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.