@carbon/react
Version:
React components for the Carbon Design System
31 lines (25 loc) • 926 B
JavaScript
/**
* Copyright IBM Corp. 2016, 2023
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
/**
* 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 = React.useRef(callback);
React.useEffect(() => {
savedCallback.current = callback;
}, [callback]);
return React.useCallback((...args) => savedCallback.current ? savedCallback.current(...args) : undefined, []);
};
exports.useSavedCallback = useSavedCallback;