@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
21 lines (16 loc) • 542 B
text/typescript
import { useEffect, useRef } from 'react'
type CustomEquals<T> = (previous: T | undefined, current: T) => boolean
const useOriginalCopyFn = <T>(value: T, equals: CustomEquals<T>): T => {
const cache = useRef<T>(value)
const equalsRef = useRef(equals)
useEffect(() => {
equalsRef.current = equals
}, [equals])
useEffect(() => {
if (!equalsRef.current(cache.current, value)) {
cache.current = value
}
}, [value])
return equals(cache.current, value) ? cache.current : value
}
export default useOriginalCopyFn