Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphql 在Apollo客户端中,writeQuery更新缓存,但UI组件不会重新加载_Graphql_Apollo Client - Fatal编程技术网

Graphql 在Apollo客户端中,writeQuery更新缓存,但UI组件不会重新加载

Graphql 在Apollo客户端中,writeQuery更新缓存,但UI组件不会重新加载,graphql,apollo-client,Graphql,Apollo Client,我严格遵循阿波罗客户机2.6的文档。似乎从2018年起,人们就开始在网上讨论这个问题。我错过什么了吗?文档应该更新,这根本不起作用,很明显它对这么多人不起作用 当缓存成功写入时,如何让UI更新。这应该是开箱即用的。这是一个创建变异,我正在addleo变异中添加一条记录,之后我想在所有记录列表中显示添加的记录,即list leo: const ADD_LEO = gql` mutation AddLeo($text: String!, $userId: String!){ addLeo(tex

我严格遵循阿波罗客户机2.6的文档。似乎从2018年起,人们就开始在网上讨论这个问题。我错过什么了吗?文档应该更新,这根本不起作用,很明显它对这么多人不起作用

当缓存成功写入时,如何让UI更新。这应该是开箱即用的。这是一个创建变异,我正在
addleo
变异中添加一条记录,之后我想在所有记录列表中显示添加的记录,即
list leo

const ADD_LEO = gql`
mutation AddLeo($text: String!, $userId: String!){
  addLeo(text: $text, userId: $userId) {
    id
    text
    userId
  }  
}
`;

 const LISTLEOS = gql`
query LISTLEOS {
  ListLeos {
    id
    text
    userId
  }
}
`;

  const [addleo, { loading, error }] = useMutation
      (
          ADDLEO,
          {
            update(cache, {data: {addleo}}){
                const { ListLeos } = cache.readQuery({ query: LISTLEOS});
                cache.writeQuery({
                    query: LISTLEOS,
                    data: { ROOT_QUERY: ListLeos.concat([addleo])},
                }); 
            }
          } 
      );

上述情况会导致与
列表操作系统相关的组件重新加载,但不会。请提供帮助。

无需将
ROOT\u QUERY
用作键。传递给
writeQuery
data
选项应该与服务器返回的
数据类似:

cache.writeQuery({
  query: LISTLEOS,
  data: { ListLeos: ListLeos.concat([addleo])},
}); 

提供了错误的语法/错误的数据。。。首先确保你做的事情是正确的