React Memo Vs useMemo Vs useCallback? See Example

React Memo vs useMemo vs useCallback

  • React.memo: Wraps a component to prevent unnecessary re-renders if props are unchanged.
  • useMemo: Memoizes computed values to avoid recalculating on every render.
  • useCallback: Memoizes functions to prevent recreating them unnecessarily.

React.memo Example

import React from "react";

const Button = React.memo(({ onClick }) => {
  console.log("Button Rendered");
  return <button onClick={onClick}>Click Me</button>;
});

✅ Button re-renders only when props change.


useMemo Example

import React, { useState, useMemo } from "react";

function App() {
  const [count, setCount] = useState(0);
  const expensive = useMemo(() => count * 2, [count]);

  return (
    <div>
      <h2>Expensive: {expensive}</h2>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

✅ Expensive calculation runs only when count changes.


useCallback Example

import React, { useState, useCallback } from "react";

const Button = React.memo(({ onClick }) => <button onClick={onClick}>Click</button>);

function App() {
  const [count, setCount] = useState(0);

  const increment = useCallback(() => setCount(c => c + 1), []);
  
  return <Button onClick={increment} />;
}

✅ Memoized function prevents unnecessary re-renders in memoized child.


Key Points

FeatureReact.memouseMemouseCallback
PurposePrevent component re-renderMemoize valuesMemoize functions
Use CaseChild componentsExpensive calculationsPassing functions to children
DependenciesPropsDependency arrayDependency array

Conclusion

Use memo for components, useMemo for values, and useCallback for functions to optimize React performance.


Citations

https://savanka.com/category/learn/react/
https://www.w3schools.com/REACT/DEFAULT.ASP

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *