我正在使用Apollo Client进行React项目,并且正在进行cache.writeQuery()
调用,这导致相关查询组件的重新呈现。
有关详情,请参见代码:
cache.writeQuery():
cache.writeQuery( {
query : serverQueries.searchMessages,
variables : {
labelId : labelId,
searchTerms : searchTermsString ? searchTermsString : null,
)
},
data : { Messages : updatedData }
} );
正在重新呈现的相关查询组件:
<SearchMessagesQuery
query={serverQueries.searchMessages}
variables={{
labelId: searchMailLabelId,
searchTerms: searchTerms.asJSON,
}}>
我不希望此查询组件重新呈现,并且根据我的阅读,看来cache.writeData()
允许该行为。但是,cache.writeData()
显然不允许我需要更新唯一/单独variable
的{{1}}键。如何使用searchMessages
来执行相同的查询?
答案 0 :(得分:0)
cache.writeData()
用于更新单个项目(按类型)的用法here
但是...我很害怕它也会强制重新渲染查询组件。此行为来自<Query/>
组件内部-创建一个可观察的/订阅:
Apollo客户程序为我们的查询创建一个可观察的对象。我们的组件通过Apollo客户端缓存订阅查询结果。
建议:
您可以使用 old graphql()
HOC来避免使用cache.writeQuery()
重新呈现。我个人更喜欢使用更灵活/功能更强大的recompose pattern(例如,用于组成多个查询,变异,局部状态,还原connect()
)的HOC。