提问人:Pierre Olivier Tran 提问时间:11/9/2023 最后编辑:Pierre Olivier Tran 更新时间:11/9/2023 访问量:21
阻止 Apollo 缓存某些操作的请求
Prevent Apollo caching requests for some operations
问:
我在下一个.js应用程序中使用Apollo客户端实验性getClient。
export const { getClient } = registerApolloClient(
() =>
new ApolloClient({
cache: new InMemoryCache(),
link: new HttpLink({
uri: `${apiBaseUrl}/graphql`,
}),
}),
);
我用它来处理我的登录突变,如下所示:
const { data } = await getClient().mutate({
mutation: LOGIN_MUTATION,
variables: {
email,
password,
},
fetchPolicy: "network-only",
});
不幸的是,该属性似乎不起作用:我的服务器返回的令牌始终相同,因此无法登录。fetchPolicy
到目前为止,我发现的唯一解决方法是更新我的客户端声明以包含以下内容:
fetchOptions: { cache: "no-store" },
但显然,我想缓存我的一些查询的结果。
答:
0赞
Pierre Olivier Tran
11/9/2023
#1
服务器缓存似乎不考虑该选项。相反,您需要使用以下命令:fetchPolicy
const { data } = await getClient().mutate({
mutation: MY_MUTATION,
variables: {
myVariable,
},
context: {
fetchOptions: {
// Do not cache the result of login mutation
next: { revalidate: 0 },
},
},
});
这可确保始终重新验证数据。
评论
1赞
Michel Floyd
11/9/2023
fetch-policy 仅适用于客户端缓存。没有提到服务器端缓存。
评论