梗概
- Apollo Client 内置了一套强大的缓存机制,默认使用
InMemoryCache来存储查询结果。 - Apollo Client 会根据查询的结构自动将结果缓存,并在后续请求时优先从缓存中读取数据。
示例
配置缓存:
// src/apollo.js
import { ApolloClient, InMemoryCache } from '@apollo/client';
const apolloClient = new ApolloClient({
uri: 'https://your-graphql-endpoint.com/graphql',
cache: new InMemoryCache(), // 使用内存缓存
});
export default apolloClient;更新缓存:
如果你进行了一些突变操作并希望更新缓存,可以使用 update 函数:
import { gql, useMutation } from '@apollo/client';
const UPDATE_DATA = gql`
mutation UpdateData($id: ID!, $name: String!) {
updateData(id: $id, name: $name) {
id
name
}
}
`;
export default {
setup() {
const [updateData] = useMutation(UPDATE_DATA, {
update(cache, { data: { updateData } }) {
// 更新缓存以包含新的数据
const dataInCache = cache.readQuery({ query: GET_DATA });
cache.writeQuery({
query: GET_DATA,
data: { myData: [...dataInCache.myData, updateData] },
});
},
});
return {
updateData,
};
},
};