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

时间:2020-10-22 13:56:06

标签: graphql apollo react-apollo

我有一个如下的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的字段。我想要在那里,这样我就可以遍历缓存并获取每一行的值。

1 个答案:

答案 0 :(得分:0)

根据 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