Gitako/src/components/FileExplorer/useLatestValueRef.tsx
2024-09-23 21:40:02 +08:00

15 lines
421 B
TypeScript

import { useCallback, useEffect, useRef } from 'react'
function useLatestValueRef<T>(value: T) {
const ref = useRef(value)
useEffect(() => {
ref.current = value
})
return ref
}
export function useCallbackRef<Args extends AnyArray, R>(
callback: (...args: Args) => R,
): (...args: Args) => R {
const ref = useLatestValueRef(callback)
return useCallback((...args: Args) => ref.current(...args), [ref])
}