更新缓存并在 Apollo 中触发重新渲染

问题描述 投票:0回答:3

我正在尝试更新某个项目的缓存,但更改没有反映到 ui 上,我有一个项目正在被一个有很多变量的查询获取,我无法访问它们我正在更新该项目的组件并且该项目也是分页列表的一部分,所以我的代码是

update = (cache)=>{
 cache.data.data['ItemType_'+itemId].title = "New title"


}
据我所知,这段代码应该更新该项目的缓存,但它没有在 ui 中显示,有没有办法更新缓存中的单个项目并呈现结果?

javascript reactjs graphql apollo apollo-client
3个回答
0
投票

直接更新缓存不会导致重新渲染 afaik。我建议在更新缓存后使用

fetchPolicy: "cache-only"
运行查询。这将更新组件的数据并在不访问网络的情况下重新渲染。


0
投票

尝试并确保您从突变中返回正确的数据。

从突变中返回正确的字段。必填字段可以是

id
。如果它没有从变异中返回,那么就不会刷新或重新渲染。


0
投票

您应该能够使用

cache.modify
发布对缓存的更改。

cache.modify“触发刷新依赖于修改字段的所有活动查询(除非您通过传递广播来覆盖此行为:false)”

您确实需要使用使用缓存的fetchPolicy。

© www.soinside.com 2019 - 2024. All rights reserved.