yew_hooks/hooks/
use_effect_update.rs1use yew::prelude::*;
2
3use super::use_is_first_mount;
4
5#[hook]
31pub fn use_effect_update<Callback, Destructor>(callback: Callback)
32where
33 Callback: FnOnce() -> Destructor + 'static,
34 Destructor: FnOnce() + 'static,
35{
36 let first = use_is_first_mount();
37
38 use_effect(move || {
39 if first {
40 Box::new(|| ()) as Box<dyn FnOnce()>
41 } else {
42 Box::new(callback())
43 }
44 });
45}
46
47#[hook]
50pub fn use_effect_update_with_deps<Callback, Destructor, Dependents>(
51 callback: Callback,
52 deps: Dependents,
53) where
54 Callback: FnOnce(&Dependents) -> Destructor + 'static,
55 Destructor: FnOnce() + 'static,
56 Dependents: PartialEq + 'static,
57{
58 let first = use_is_first_mount();
59
60 use_effect_with(deps, move |deps| {
61 if first {
62 Box::new(|| ()) as Box<dyn FnOnce()>
63 } else {
64 Box::new(callback(deps))
65 }
66 });
67}