UNPKG

@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
"use strict"; 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]); }