You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Preact Signals的effect仅响应指定Signal的变化?

解决方案

方法一:使用watch API(推荐)

Vue的watch API天生对应React useEffect带依赖数组的场景,专门用于监听特定数据源的变化并执行回调:

watch(shoes, (newShoesValue) => {
  productsShoes.value = newShoesValue
})

这里直接监听shoes响应式对象,只有当它的值发生变化时,回调才会执行,完全匹配你想要的效果。

方法二:调整effect的依赖追踪(若必须使用effect)

如果一定要基于effect实现,需确保effect内部仅访问shoes.value,避免意外追踪其他响应式依赖。如果你的代码已经只访问shoes.value但仍有多余触发,可能是productsShoes被其他地方修改导致的误触发,此时可以手动明确依赖:

effect(() => {
  const currentShoes = shoes.value
  productsShoes.value = currentShoes
})

不过这种写法本质和你原代码一致,若仍存在多余执行,建议排查是否有其他地方意外修改了effect追踪的依赖,此时更推荐用watch来精准控制。

内容的提问来源于stack exchange,提问作者Vinicius Lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:07:04