Function signal_debounced

Source
pub fn signal_debounced<S, T>(
    value: S,
    ms: impl Into<Signal<f64>> + 'static,
) -> Signal<T, SyncStorage>
where S: Into<Signal<T, SyncStorage>>, T: Send + Sync + Clone + 'static,
Expand description

Debounce changing of a Signal value.

Use *_local variants for values that are not Send + Sync.

§Demo

Link to Demo

§Usage

let (input, set_input) = signal("");
let debounced: Signal<&'static str> = signal_debounced(input, 1000.0);

let (input_local, set_input_local) = signal_local(RefCell::new(0));
let debounced_local: Signal<RefCell<i32>, _> = signal_debounced_local(input_local, 1000.0);

§Options

The usual debounce option max_wait is available.

let (input, set_input) = signal("");
let debounced: Signal<&'static str> = signal_debounced_with_options(
    input,
    1000.0,
    DebounceOptions::default().max_wait(Some(500.0))
);

let (input_local, set_input_local) = signal_local(RefCell::new(0));
let debounced_local: Signal<RefCell<i32>, _> = signal_debounced_local_with_options(
    input_local,
    1000.0,
    DebounceOptions::default().max_wait(Some(500.0))
);

§Server-Side Rendering

Internally this uses setTimeout which is not supported on the server. So usually a throttled signal on the server will simply be ignored.