@wordpress/components
Version:
UI components for WordPress.
30 lines (25 loc) • 667 B
text/typescript
/**
* External dependencies
*/
import type { RefObject } from 'react';
/**
* WordPress dependencies
*/
import { useRef } from '@wordpress/element';
import { useIsomorphicLayoutEffect } from '@wordpress/compose';
/**
* Creates a reference for a prop. This is useful for preserving dependency
* memoization for hooks like useCallback.
*
* @see https://codesandbox.io/s/uselatestref-mlj3i?file=/src/App.tsx
*
* @param value The value to reference
* @return The prop reference.
*/
export function useLatestRef< T >( value: T ): RefObject< T > {
const ref = useRef( value );
useIsomorphicLayoutEffect( () => {
ref.current = value;
} );
return ref;
}