UNPKG

@wordpress/components

Version:
30 lines (25 loc) 667 B
/** * 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; }