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

Mobx计算属性(getter)未随localStorage更新问题排查

根本原因解析

Mobx的计算属性(如你代码里的count getter)实现响应式更新的核心是依赖追踪机制——它只会对自己能识别的可观察依赖项的变化做出反应,你的问题恰好踩中了这个机制的边界:

  • makeAutoObservable确实会将类中的getter标记为计算属性,但这个getter的取值来源是localStorage,这是浏览器原生的同步存储对象,不属于Mobx的可观察体系。
  • 当第一次计算count时,Mobx仅会记录当前localStorage返回的静态值,但它无法监听localStorage的后续修改——Mobx没有能力追踪原生浏览器API的状态变化。
  • 所以你调用setCount更新localStorage后,虽然原生存储里的值已经改变,但Mobx不知道自己的计算依赖已经失效,不会重新执行count getter的逻辑,直到页面硬刷新(类重新初始化,getter被再次调用)才会读取新值。

关键逻辑补充:Mobx的响应式是建立在自身管理的可观察状态之上的,只有当计算属性依赖的是Mobx标记的可观察变量(比如observable修饰的属性、其他计算属性)时,才会自动触发重新计算。原生存储、普通JS变量这类非可观察项的变化,完全不在Mobx的感知范围内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:17:34