UNPKG

@base-ui/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.

18 lines (17 loc) 571 B
'use client'; import * as React from 'react'; import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect'; import { useStableCallback } from '@base-ui/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]); }