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

Apollo缓存更新后UI未同步:如何更新单条缓存并触发重渲染?

解决Apollo缓存更新后UI不渲染的问题
  • 你直接修改cache.data.data的方式不被Apollo认可,这种内部数据的手动修改不会触发缓存变更通知,所以UI组件不会重新渲染。必须使用官方提供的cache.modify API来修改缓存实体,这才会触发缓存更新事件,让关联的UI组件同步更新。

    正确的代码写法如下:

    update = (cache) => {
      // 生成实体的唯一缓存标识(必须指定__typename和实体id)
      const entityId = cache.identify({ __typename: 'ItemType', id: itemId });
      cache.modify({
        id: entityId,
        fields: {
          title() {
            return "New title";
          }
        }
      });
    }
    
  • 针对分页列表的情况:Apollo的归一化缓存会自动维护实体与引用它的查询之间的关联。只要你的分页查询返回的列表项包含正确的__typename和id字段,当你通过cache.modify更新实体后,分页列表中的对应条目会自动同步更新,无需额外修改分页查询的缓存数据。

  • 额外注意:确保itemId是实体的正确ID,且__typename与后端返回的类型完全一致(大小写敏感),否则会找不到对应的缓存实体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:45:32