Skip to content

@sqlrooms/ui / useDebouncedValue

Function: useDebouncedValue()

useDebouncedValue<T>(externalValue, onPersist, debounceMs): [T, (value) => void]

Hook for managing local state with debounced persistence.

Provides immediate local state updates for responsive UI while debouncing expensive persistence operations (e.g., store updates, API calls).

Type Parameters

Type Parameter
T

Parameters

ParameterTypeDefault valueDescription
externalValueTundefinedValue from external source (store, props, etc.)
onPersist(value) => voidundefinedCallback to persist value (will be debounced)
debounceMsnumber300Debounce delay in milliseconds (default: 300)

Returns

[T, (value) => void]

[localValue, setValue] - Current local value and setter function

Example

tsx
const [localSpec, setSpec] = useDebouncedValue(
  cell.data.vegaSpec,
  (spec) => updateCell(id, draft => { draft.data.vegaSpec = spec }),
  300
);