import { useRef } from 'octane'; import { subSlot } from '../internal'; import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect'; export function useLatest(value: T, slot?: symbol): { current: T | undefined } { const valueRef = useRef(value, subSlot(slot, 'ref')); useIsomorphicLayoutEffect( () => { valueRef.current = value; }, undefined, subSlot(slot, 'effect'), ); return valueRef; }