macro_rules! use_effect {
    (on_each_render () => $e:expr) => { ... };
    (() => $e:expr) => { ... };
    (($( $dep:ident $(= $dep_expr:expr)? ),+ $(,)?) => $e:expr ) => { ... };
}
Expand description

use_effect with dependencies.

The closure should not capture any local variables. If you want to use a variable without depend on it, you can use_ref(value) then depend on it;

let state = 0;
let message = "The state is ";
use_effect!((
    // depend on `state`
    state,
    // depend on an expression and name it `message`
    message = message.to_string(),
) => {
    web_sys::console::log_2(&JsValue::from(message.as_ref()), &JsValue::from(*state));
})

use_effect_on_mounted

use_effect!(() => {
    do_something();
})

use_effect_on_each_render

use_effect!(on_each_render () => {
    do_something();
})