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
34
use yew::prelude::*;

/// A lifecycle hook that runs an effect only once.
///
/// # Example
///
/// ```rust
/// # use yew::prelude::*;
/// # use log::debug;
/// #
/// use yew_hooks::prelude::*;
///
/// #[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! {
///         <>
///         </>
///     }
/// }
/// ```
#[hook]
pub fn use_effect_once<Callback, Destructor>(callback: Callback)
where
    Callback: FnOnce() -> Destructor + 'static,
    Destructor: FnOnce() + 'static,
{
    use_effect_with_deps(move |_| callback(), ());
}