forked from 77media/video-flow
20 lines
479 B
TypeScript
20 lines
479 B
TypeScript
import { useEffect, useRef } from 'react';
|
|
import isEqual from 'lodash/isEqual';
|
|
|
|
function useDeepCompareMemoize<T>(value: T) {
|
|
const ref = useRef<T>();
|
|
|
|
if (!isEqual(value, ref.current)) {
|
|
ref.current = value;
|
|
}
|
|
|
|
return ref.current;
|
|
}
|
|
|
|
export function useDeepCompareEffect(
|
|
callback: () => void | (() => void),
|
|
dependencies: any[]
|
|
) {
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
useEffect(callback, dependencies.map(useDeepCompareMemoize));
|
|
} |