yew_hooks/hooks/
use_effect_once.rs

1use yew::prelude::*;
2
3/// A lifecycle hook that runs an effect only once.
4///
5/// # Example
6///
7/// ```rust
8/// # use yew::prelude::*;
9/// # use log::debug;
10/// #
11/// use yew_hooks::prelude::*;
12///
13/// #[function_component(EffectOnce)]
14/// fn effect_once() -> Html {
15///     use_effect_once(|| {
16///         debug!("Running effect once on mount");
17///         
18///         || debug!("Running clean-up of effect on unmount")
19///     });
20///     
21///     html! {
22///         <>
23///         </>
24///     }
25/// }
26/// ```
27#[hook]
28pub fn use_effect_once<Callback, Destructor>(callback: Callback)
29where
30    Callback: FnOnce() -> Destructor + 'static,
31    Destructor: FnOnce() + 'static,
32{
33    use_effect_with((), move |_| callback());
34}