UNPKG

@shopify/polaris

Version:

Shopify’s admin product component library

29 lines (25 loc) 882 B
import { useRef } from 'react'; const UNIQUE_IDENTIFIER = Symbol('unique_identifier'); /** * useLazyRef provides a lazy initial value, similar to lazy * initial state the initialValue is the value used during * initialization and disregarded after that. Use this hook * for expensive initialization. * @param initialValue - A function that will return the initial * value and be disregarded after that * @returns MutableRefObject<T> - Returns a ref object with the * results from invoking initial value * @example * function ComponentExample() { * const title = useLazyRef(() => someExpensiveComputation()); * return <h1>{title.current}</h1>; * } */ function useLazyRef(initialValue) { const lazyRef = useRef(UNIQUE_IDENTIFIER); if (lazyRef.current === UNIQUE_IDENTIFIER) { lazyRef.current = initialValue(); } return lazyRef; } export { useLazyRef };