( value: T | null | undefined, isEqual: (v1: T | null | undefined, v2: T | null | undefined) => boolean, onChange?: () => void )
| 5 | }; |
| 6 | |
| 7 | export const useComparatorRef = <T>( |
| 8 | value: T | null | undefined, |
| 9 | isEqual: (v1: T | null | undefined, v2: T | null | undefined) => boolean, |
| 10 | onChange?: () => void |
| 11 | ): RefHook<T | null | undefined> => { |
| 12 | const ref = useRef(value); |
| 13 | useEffect(() => { |
| 14 | if (!isEqual(value, ref.current)) { |
| 15 | ref.current = value; |
| 16 | if (onChange) { |
| 17 | onChange(); |
| 18 | } |
| 19 | } |
| 20 | }); |
| 21 | return ref; |
| 22 | }; |
| 23 | |
| 24 | export interface HasIsEqual<T> { |
| 25 | isEqual: (value: T) => boolean; |
no test coverage detected