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

为何Automerge IndexedDB适配器需先解引用Svelte Store才同步?

问题原因拆解
  • Svelte 5 $state.raw 与 Automerge 追踪逻辑不兼容
    $state.raw返回的是原始对象引用,Automerge for Svelte需要通过显式解引用文档句柄来追踪变更。如果直接基于$state.raw的引用删除节点,Automerge内部的变更检测机制不会被触发,它无法感知到内存里的文档已经修改。

  • Automerge IndexedDB 适配器的惰性同步特性
    Automerge的IndexedDB适配器默认是按需同步——只有当它检测到文档句柄被主动访问(比如调用getHandleDeref)时,才会把内存中的变更写入本地存储。如果删除操作没触发这个检测,内存里的删除变更就不会持久化,刷新浏览器后只能从IndexedDB读取旧数据,已删除的节点自然就回来了。

  • 自定义AutomergeHandle的变更监听遗漏
    你写的AutomergeHandle类可能没和$state.raw的变更做绑定。通过$state.raw修改节点时,AutomergeHandle没收到变更通知,也就不会触发同步到IndexedDB的流程。而调用getHandleDeref相当于主动唤醒了Automerge的变更检测,让它意识到文档需要持久化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 00:44:51