繁体   English   中英

Apollo-Client GraphQL refetchQueries 是如何工作的?

[英]How does Apollo-Client GraphQL refetchQueries works?

知道我们如何从refetchQueries获取响应数据吗? 我从突变中获得了查询响应数据。

突变

import { gql } from 'apollo-boost';

export const DONE_TASK = gql`
    mutation DoneTask($taskId: ID!) {
        doneTask(input: {
            taskId: $taskId
        }) {
            task {
                id
                status
            }
        }
    }
`;

询问

import { gql } from 'apollo-boost';

export const GET_TASKS_BY_STATUS = gql`
    query GetTasksByStatus($status: String!) {
        getTasksByStatus(status: $status) {
            edges {
                node {
                    id
                    status
                    description
                }
            }
        }
    }
`;

用法

const response = await client.mutate({
    mutation: DONE_TASK,
    variables: {
        taskId: 1
    },
    refetchQueries: () => [{
        query: GET_TASKS_BY_STATUS,
        variables: { 
            status: "OPEN"
        },
    }]
});

console.log(response);
Output
 data: { doneTask: { task: { id: 1, status: 'DONE'} } }

但我期望来自GET_TASKS_BY_STATUS的响应数据。

您通过refetchQueries重新获取的任何查询都应该已被某些useQuery钩子、 Query组件或graphql HOC 使用。 为了访问与突变相同的组件内的数据,您需要利用在同一组件内重新获取的查询:

const { data } = useQuery(GET_TASKS_BY_STATUS, { variables: { status: 'OPEN' } })
const [mutate] = useMutation(DONE_TASK,{
  variables: {
    taskId: 1,
  },
  refetchQueries: () => [{
    query: GET_TASKS_BY_STATUS,
    variables: { 
      status: 'OPEN',
    },
  }],
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM