Roe*_*oel 4 reactjs graphql apollo-client
知道我们如何从中获取响应数据吗refetchQueries?我从突变中获取了查询响应数据。
import { gql } from 'apollo-boost';
export const DONE_TASK = gql`
mutation DoneTask($taskId: ID!) {
doneTask(input: {
taskId: $taskId
}) {
task {
id
status
}
}
}
`;
Run Code Online (Sandbox Code Playgroud)
import { gql } from 'apollo-boost';
export const GET_TASKS_BY_STATUS = gql`
query GetTasksByStatus($status: String!) {
getTasksByStatus(status: $status) {
edges {
node {
id
status
description
}
}
}
}
`;
Run Code Online (Sandbox Code Playgroud)
const response = await client.mutate({
mutation: DONE_TASK,
variables: {
taskId: 1
},
refetchQueries: () => [{
query: GET_TASKS_BY_STATUS,
variables: {
status: "OPEN"
},
}]
});
console.log(response);
Run Code Online (Sandbox Code Playgroud)
输出
data: {
doneTask: {
task: { id: 1, status: 'DONE'}
}
}
Run Code Online (Sandbox Code Playgroud)
但我期待来自 的响应数据GET_TASKS_BY_STATUS。
您重新获取的任何查询都应该已被某些钩子、组件或HOCrefetchQueries使用。为了访问与突变相同的组件内的数据,您需要利用在同一组件内重新获取的查询:useQueryQuerygraphql
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',
},
}],
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11683 次 |
| 最近记录: |