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

SolidJS问题:使用createEffect监听signal变更失效

问题分析与解决:SolidJS createEffect未触发的原因

你的代码里count初始值为0,点击按钮执行doubleCount时,count() * 2的结果仍然是0——signal的值没有发生实际变更,因此SolidJS的响应式系统不会触发createEffect重新运行。

SolidJS的响应式机制基于值的严格相等性判断(===),只有当signal的新值与旧值不相等时,才会通知依赖它的effect、memo等执行更新逻辑。

修改方案

调整代码让count的值真正产生变化即可,比如:

  1. 改变更新逻辑,让每次点击递增数值:
const doubleCount = () => setCount(count() + 1);
  1. 或者保留翻倍逻辑,将count的初始值设为非0数值:
const [count, setCount] = createSignal(1);
const doubleCount = () => setCount(count() * 2);

这样每次点击按钮后,count的signal值都会发生变更,createEffect就会自动追踪到变化并执行日志打印操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:15:34