1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use yew::use_effect_with_deps;

/// A lifecycle hook that runs an effect only once.
///
/// # Example
/// ```rust
/// # use yew::prelude::*;
/// # use log::debug;
/// #
/// # use yew_hooks::use_effect_once;
/// #
/// #[function_component(EffectOnce)]
/// fn effect_once() -> Html {
///     use_effect_once(|| {
///         debug!("Running effect once on mount");
///         
///         || debug!("Running clean-up of effect on unmount")
///     });
///     
///     html! {
///         <>
///         </>
///     }
///
/// }
/// ```
pub fn use_effect_once<Callback, Destructor>(callback: Callback)
where
    Callback: FnOnce() -> Destructor + 'static,
    Destructor: FnOnce() + 'static,
{
    use_effect_with_deps(move |_| callback(), ());
}