@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.
23 lines (22 loc) • 887 B
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useValueChanged = useValueChanged;
var React = _interopRequireWildcard(require("react"));
var _useIsoLayoutEffect = require("@base-ui-components/utils/useIsoLayoutEffect");
var _useStableCallback = require("@base-ui-components/utils/useStableCallback");
function useValueChanged(value, onChange) {
const valueRef = React.useRef(value);
const onChangeCallback = (0, _useStableCallback.useStableCallback)(onChange);
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
if (valueRef.current === value) {
return;
}
onChangeCallback(valueRef.current);
}, [value, onChangeCallback]);
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
valueRef.current = value;
}, [value]);
}