@base-ui-components/react
Version:
Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.
16 lines • 578 B
JavaScript
import * as React from 'react';
import { useIsoLayoutEffect } from '@base-ui-components/utils/useIsoLayoutEffect';
import { useStableCallback } from '@base-ui-components/utils/useStableCallback';
export function useValueChanged(value, onChange) {
const valueRef = React.useRef(value);
const onChangeCallback = useStableCallback(onChange);
useIsoLayoutEffect(() => {
if (valueRef.current === value) {
return;
}
onChangeCallback(valueRef.current);
}, [value, onChangeCallback]);
useIsoLayoutEffect(() => {
valueRef.current = value;
}, [value]);
}