
The useCallback hook allows you to memoize a function so that it’s only re-created when its dependencies change. This can help improve performance by preventing unnecessary re-renders.
Here’s an example of how to use useCallback to memoize a function:
import React, { useState, useCallback } from 'react';
function SearchBar({ onSearch }) {
  const [query, setQuery] = useState('');
  const handleQueryChange = useCallback(event => {
    setQuery(event.target.value);
    onSearch(event.target.value);
  }, [onSearch]);
  return (
    <input type="text" value={query} onChange={handleQueryChange} />
  );
}
In this example, we define a SearchBar component that takes an onSearch prop function. We use the useCallback hook to memoize the handleQueryChange function so that it’s only re-created when the onSearch function changes.