useMemo() is used to

Store calculated value

It prevents recalculating data on every render.

Syntex:

const value = useMemo(() => {
 return calculation;
}, [dependency]);

Example Without useMemo

function App() {
 const [count, setCount] = useState(0);
 const total = [1, 2, 3, 4, 5].reduce(
   (sum, num) => sum + num,
   0
 );
 console.log("Calculation running");
 return (
   <>
     <h1>{total}</h1>
     <button onClick={() => setCount(count + 1)}>
       {count}
     </button>
   </>
 );
}

Problem:

Calculation runs every button click

Example With useMemo

import { useMemo, useState } from "react";
function App() {
 const [count, setCount] = useState(0);
 const total = useMemo(() => {
   console.log("Calculation running");
   return [1, 2, 3, 4, 5].reduce(
     (sum, num) => sum + num,
     0
   );
 }, []);
 return (
   <>
     <h1>{total}</h1>
     <button onClick={() => setCount(count + 1)}>
       {count}
     </button>
   </>
 );
}
export default App;

Now calculation runs only once.