@rocket.chat/fuselage-hooks
Version:
React hooks for Fuselage, Rocket.Chat's design system and UI toolkit
27 lines • 969 B
TypeScript
type CallbackRefWithCleanup<T> = (node: T) => () => void;
type CallbackRef<T> = (node: T) => void;
type SafeCallbackRef<T> = CallbackRefWithCleanup<T> | CallbackRef<T>;
/**
* useSafeRefCallback will call a cleanup function (returned from the passed callback)
* if the passed callback is called multiple times (similar to useEffect, but in a callbackRef)
*
* @example
* const callback = useSafeRefCallback(
* useCallback(
* (node: T) => {
* if (!node) {
* return;
* }
* node.addEventListener('click', listener);
* return () => {
* node.removeEventListener('click', listener);
* };
* },
* [listener],
* ),
* );
*
*/
export declare const useSafeRefCallback: <T extends HTMLElement | null>(callback: SafeCallbackRef<T>) => (node: T) => void;
export {};
//# sourceMappingURL=useSafeRefCallback.d.ts.map