使用 Apollo-Client 重新获取查询会引发错误

sed*_*uim 1 apollo reactjs graphql

我正在使用 Apollo-client 将突变发布到我的 graphql 服务器。突变完成后,我想重新获取该数据。我尝试使用挂钩refetchQueries中的参数useMutation,但是当我执行代码时收到此错误:

查询选项是必需的。您必须在查询选项中指定您的 GraphQL 文档。

这是发送突变的代码行:

const [addUser, { data, loading, error }] =
    useMutation(ADD_USER_QUERY, {
        refetchQueries:[GET_USERS_QUERY]
    });
Run Code Online (Sandbox Code Playgroud)

这是我的查询(硬编码参数是为了查看问题是否是由于传递变量引起的):

export const ADD_USER_QUERY = gql`
    mutation {
        createUser(name: "Albert Einstein", email: "albert@yahoo.ca") {
            id
            name
        }
    }
`;
Run Code Online (Sandbox Code Playgroud)

谢谢你!

sed*_*uim 9

好吧,所以我弄清楚问题是什么了。我必须传递一个带有数组"query"中键的对象refetchQueries

const [addUser, { data, loading, error }] =
    useMutation(ADD_USER_QUERY, {
        refetchQueries: [{ query: GET_USERS_QUERY }],
    });
Run Code Online (Sandbox Code Playgroud)

但这很奇怪,因为 ApolloDocs 中没有提到它。他们只是使用一个数组......

// Refetches two queries after mutation completes
const [addTodo, { data, loading, error }] = useMutation(ADD_TODO, {

  refetchQueries: [
    GET_POST, // DocumentNode object parsed with gql
    'GetComments' // Query name
  ],
});
Run Code Online (Sandbox Code Playgroud)

有谁知道这是为什么?

谢谢!