fumadocs-core
Version:
The React.js library for building a documentation website
23 lines (21 loc) • 654 B
JavaScript
import { useState } from "react";
//#region src/utils/use-on-change.ts
function isDifferent(a, b) {
if (Array.isArray(a) && Array.isArray(b)) return b.length !== a.length || a.some((v, i) => isDifferent(v, b[i]));
return a !== b;
}
/**
* @param value - state to watch
* @param onChange - when the state changed
* @param isUpdated - a function that determines if the state is updated
*/
function useOnChange(value, onChange, isUpdated = isDifferent) {
const [prev, setPrev] = useState(value);
if (isUpdated(prev, value)) {
onChange(value, prev);
setPrev(value);
}
}
//#endregion
export { useOnChange };
//# sourceMappingURL=use-on-change.js.map