signal_debounced
Debounce changing of a Signal
value.
Use *_local
variants for values that are not Send + Sync
.
Demo
Usage
use leptos::prelude::*;
use leptos_use::{signal_debounced, signal_debounced_local};
use std::cell::RefCell;
#[component]
fn Demo() -> impl IntoView {
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);
view! { }
}
Options
The usual debounce option max_wait
is available.
use leptos::prelude::*;
use leptos_use::{signal_debounced_with_options, signal_debounced_local_with_options, DebounceOptions};
use std::cell::RefCell;
#[component]
fn Demo() -> impl IntoView {
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))
);
view! { }
}
Recommended Reading
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.
Feature
This function is only available if the crate feature
signal_debounced
is enabled