watch! 宏
2026/5/21小于 1 分钟euvuirustwasmmacroswatch
单个信号监听
use euv::*;
let count: Signal<i32> = use_signal(|| 0);
watch!(count, |count_val| {
web_sys::console::log_1(&format!("Count: {}", count_val).into());
});多个信号监听
let count: Signal<i32> = use_signal(|| 0);
let name: Signal<String> = use_signal(|| String::from("euv"));
watch!(count, name, |count_val, name_val| {
web_sys::console::log_1(&format!("count={}, name={}", count_val, name_val).into());
});提示
闭包会在创建时立即执行一次(初始执行包裹在 with_suppressed_updates 中,闭包内的 .set() 调用不会触发 DynamicNode 重新渲染),之后在任意信号变化时再次执行(此时 .set() 调用正常触发渲染)。
注意
信号表达式的数量必须与闭包参数的数量一致。
提示
watch! 必须在 DynamicNode 的渲染函数内部(即 html! 的 {expr} 花括号表达式内)使用,以确保其内部状态在重新渲染时持久化。