DEV Community

Cover image for Understanding useMemo
Bruno Pinela
Bruno Pinela

Posted on

Understanding useMemo

React re-renders components every time state or props change, which is great for keeping things up-to-date. But, it can also cause performance issues if you're doing heavy calculations on every render. That’s where useMemo comes in!

useMemo is a hook that caches the result of a function so it doesn’t have to run again unless its dependencies change

Image description

How It Works:

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
Enter fullscreen mode Exit fullscreen mode

useMemo takes two arguments: a function and an array of dependencies;
It’ll only re-run the function if one of the dependencies changes

When Should You Use It?

  • Expensive Calculations: If you have slow computations, wrap them in useMemo so they don’t run on every render
  • Prevent Unnecessary Re-renders: When passing objects or arrays as props, use useMemo to avoid them being recreated on each render, which could trigger unnecessary re-renders of child components

Example:
Without useMemo:

const result = computeExpensiveValue(a, b); // Runs on every render

Enter fullscreen mode Exit fullscreen mode

With useMemo:

const result = useMemo(() => computeExpensiveValue(a, b), [a, b]); // Runs only when `a` or `b` change
Enter fullscreen mode Exit fullscreen mode

When NOT to Use It:

Image description

Don’t overuse it! If your calculations are lightweight, adding useMemo won’t really help and might even slow things down. Use it when you have a clear performance problem

In Short:
Keep things simple and don’t optimize until you actually see performance issues :)

Top comments (0)