Signals 与 Hooks
当前推荐优先理解的是:
signalcomputedeffect
三者的职责
signal
基础状态源。适合:
- 输入值
- 当前选中项
- 展开/收起状态
computed
派生值。适合:
- 已过滤结果
- 已排序结果
- 只用于展示的组合值
effect
副作用边界。适合:
- 日志
- 任务协调
- 非 UI 的同步动作
一个非常重要的点:
effect不同于 React 的useEffect。
它没有依赖数组,依赖由执行时的读取自动追踪。
组件内 API
在组件里,更常见的写法是:
let count = cx.signal(|| 0);
let doubled = cx.computed({
let count = count.clone();
move || count.get() * 2
});
cx.effect({
let doubled = doubled.clone();
move || {
let _ = doubled.get();
}
});关键边界
signal:事实状态computed:派生状态effect:副作用
不要把 effect 当成另一个状态容器,也不要把它当成 React 式的依赖数组 API。
推荐继续阅读
Last updated on