@carbon/react
Version:
React components for the Carbon Design System
33 lines (31 loc) • 1.05 kB
JavaScript
/**
* Copyright IBM Corp. 2016, 2026
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
import { useCallback, useEffect, useRef } from "react";
//#region src/internal/useSavedCallback.ts
/**
* Copyright IBM Corp. 2016, 2025
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* Returns a stable callback reference that always points to the latest version
* of a callback. This is useful when you want to avoid including the callback
* in dependency arrays while still ensuring the latest callback implementation
* is used.
*
* @param callback - The callback to track.
*/
const useSavedCallback = (callback) => {
const savedCallback = useRef(callback);
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
return useCallback((...args) => savedCallback.current ? savedCallback.current(...args) : void 0, []);
};
//#endregion
export { useSavedCallback };