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}