微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用GraphQL Apollo客户端,如何设置@client字段以存储在缓存对象中?

如何解决使用GraphQL Apollo客户端,如何设置@client字段以存储在缓存对象中?

我有一个如下的Apollo查询集。

query { 
  speakers {
    id
    name
    checkBoxField @client
  }
}

我的现场政策设置如下:

export const genericBoolean = cache.makeVar(false);

typePolicies: {
   Speaker: {
      fields: {
        checkBoxField: {
           read(checkBoxField = false) {
             return genericBoolean === true ? "true" : "false";
           ...

我的页面上有一个按钮,我在其中使用useQuery定义了该按钮并执行代码

onClick : genericBoolean(true)

当我转储(JSON.stringify)从useQuery返回的数据时,所有行的checkBoxField确实都变为了true,但是在我的Apollo缓存中(从chrome扩展中可以看到),没有存储用于checkBoxField的字段。我想要在那里,这样我就可以遍历缓存并获取每一行的值。

解决方法

根据 Apollo 文档,您可以使用反应变量或 Apollo 客户端缓存来存储本地状态:https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies/#storing

您上面的示例使用的是反应性变量。要将您的数据存储在缓存中,您需要使用 : mysqldump -ujosh -p -hresearch.edu datab > C:\S.sql mysqldump: Got error: 1045: Access denied for user 'josh'@'josh.vpn.es.edu' (using password: YES) when trying to connect writeQueryhttps://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies/#storing-local-state-in-the-cache

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。