在 Apollo Client 中,可以使用 refetchQueries
方法来重新获取查询结果。refetchQueries
方法可以在执行 mutation 后重新获取查询结果。
以下是一个使用 Apollo Client 3.x 版本的示例代码:
import { ApolloClient, InMemoryCache, gql } from '@apollo/client';
// 创建 Apollo Client 实例
const client = new ApolloClient({
uri: 'your_graphql_endpoint',
cache: new InMemoryCache(),
});
// 定义查询
const GET_DATA = gql`
query GetData {
data {
id
name
}
}
`;
// 定义 mutation
const UPDATE_DATA = gql`
mutation UpdateData($id: ID!, $name: String!) {
updateData(id: $id, name: $name) {
id
name
}
}
`;
// 执行 mutation,并在执行后重新获取查询结果
client.mutate({
mutation: UPDATE_DATA,
variables: { id: '1', name: 'New Name' },
refetchQueries: [{ query: GET_DATA }],
}).then(() => {
// mutation 执行成功后的操作
}).catch(error => {
// mutation 执行失败后的操作
});
在上面的示例中,首先定义了一个查询 GET_DATA
和一个 mutation UPDATE_DATA
。然后,在执行 mutation 的时候,使用 refetchQueries
将需要重新获取的查询 GET_DATA
添加到列表中。当 mutation 执行成功后,GET_DATA
查询将会被重新执行,从而更新查询结果。
请注意,refetchQueries
的值是一个数组,可以同时指定多个查询。每个查询都需要包含 query
属性,指定要重新获取的查询。
这样,就可以在 Apollo Client 中实现在多个更新之后重新获取查询结果的解决方法。