reactjs
  1. reactjs-usememo-hook

ReactJS useMemo Hook

ReactJS provides a useful hook called useMemo that allows developers to optimize the performance of their React applications by caching the results of expensive calculations. This saves a lot of computational time in case of heavy workloads on the application.

Syntax

const memoizedValue = useMemo(() => {
  // Expensive function or calculation
  return value;
}, [dependencies]);

The useMemo hook accepts two arguments:

  1. A function that returns a value.
  2. An array of dependencies.

When the dependencies change, the memoized value is recalculated. However, if the dependencies do not change, the cached value is returned.

Example

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

function App() {
  const [number, setNumber] = useState(0);
  const [factorial, setFactorial] = useState(0);

  const calculateFactorial = useMemo(() => {
    // Calculate factorial of number
    let fact = 1;
    for(let i = 1; i <= number; i++) {
      fact *= i;
    }
    return fact;
  }, [number]);

  function handleChange(event) {
    setNumber(parseInt(event.target.value));
  }

  handleClick() {
    setial(calculateFactorial);
  }

  return (
    <div>
      <input type="number" value={number} onChange={handleChange} />
      <button onClick={handleClick}>Calculate Factorial</button>
      <p>Factorial of {number} is {factorial}</p>
    </div>
  );
}

export default App;

Output

When the "Calculate Factorial" button is clicked after entering a number, the application will display the factorial of that number on the screen.

Explanation

In the above example, the useMemo hook is used to cache the result of a calculation of the factorial of a number. The calculateFactorial function is only recalculated when the number state changes. This is because the number state is used as a dependency for the useMemo hook.

Once the number state is added to the array of dependencies, the calculateFactorial function is memoized and cached. When the "Calculate Factorial" button is clicked, the calculateFactorial function is not recalculated because the number state remains the same.

Use

The useMemo hook can be used to cache any expensive operations or computations that might affect the performance of a React application.

Important Points

  • The useMemo hook returns a memoized value.
  • The memoized value is only recalculated when the dependencies change.
  • The useMemo hook is useful for caching expensive computations.

Summary

The useMemo hook is a powerful optimization tool for ReactJS developers. By caching the result of expensive computations, developers can improve the performance of their applications. Remember to only use useMemo when necessary, and to pass in correct dependencies to avoid unintended re-renders.

Published on: