簡體   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