DEV Community

Avinash Maurya
Avinash Maurya

Posted on

Memoization

Memoization is a technique used to optimize function calls by caching the results of expensive function calls and returning the cached result when the same inputs occur again. This can be especially useful in React applications to optimize the rendering performance.

In JavaScript and React (ES6 and later), you can implement memoization in various ways. One common approach is to use a cache object to store the results of function calls. Here's a simple example:

 // Memoization cache const cache = new Map(); // Example function to be memoized const expensiveFunction = (param) => { if (cache.has(param)) { console.log('Fetching from cache:', param); return cache.get(param); } // Perform expensive computation const result = /* perform computation based on param */; // Cache the result cache.set(param, result); console.log('Result not in cache. Calculating and caching:', param); return result; }; // Example usage const result1 = expensiveFunction('input1'); // Expensive computation const result2 = expensiveFunction('input2'); // Expensive computation // Subsequent calls with the same input will use the cached result const result1Cached = expensiveFunction('input1'); // Fetching from cache const result2Cached = expensiveFunction('input2'); // Fetching from cache 
Enter fullscreen mode Exit fullscreen mode

In the context of React, you can use the useMemo hook for memoization. Here's an example:

 import React, { useMemo } from 'react'; const MyComponent = ({ data }) => { // Memoize the result of the expensive computation based on data const result = useMemo(() => { console.log('Performing expensive computation based on data:', data); // Expensive computation based on data return /* result */; }, [data]); // Memoize only when data changes return ( <div> {/* Render using the memoized result */} <p>Result: {result}</p>  </div>  ); }; export default MyComponent; 
Enter fullscreen mode Exit fullscreen mode

In this example, the useMemo hook is used to memoize the result of the expensive computation based on the data prop. The computation is only recalculated when the data prop changes.

Keep in mind that memoization is a trade-off between memory and computation. It reduces redundant computations but increases memory usage to store cached results. Always assess the specific needs and characteristics of your application when deciding whether to apply memoization.

Top comments (0)