@modern-kit/react
Version:
18 lines (15 loc) • 605 B
JavaScript
import { useState, useEffect } from 'react';
import { usePreservedCallback } from '../usePreservedCallback/index.mjs';
import { isEqual } from '@modern-kit/utils';
function usePreservedState(value, comparator = isEqual) {
const [preservedState, setPreservedState] = useState(value);
const callbackComparator = usePreservedCallback(comparator);
useEffect(() => {
if (!callbackComparator(preservedState, value)) {
setPreservedState(value);
}
}, [callbackComparator, preservedState, value]);
return preservedState;
}
export { usePreservedState };
//# sourceMappingURL=index.mjs.map