Gitako/src/components/FileExplorer/useLatestValueRef.tsx
2022-07-16 01:57:41 +08:00

15 lines
415 B
TypeScript

import * as React from 'react'
function useLatestValueRef<T>(value: T) {
const ref = React.useRef(value)
React.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 React.useCallback((...args: Args) => ref.current(...args), [ref])
}