Kia*_*ian 0 graphql apollo-client nuxt.js
我设法得到了一个运行 typescript 和 apollo graphql 的 nuxt.js + nest.js。为了测试 graphql 是否有效,我使用了这个示例中的文件,并在 nuxt.js 页面中添加了一个按钮(on:click -> 通过 graphql 加载所有猫)。
一切正常,阅读和写作。
问题是在通过操场进行更改或使用其他 graphql 数据重新启动 nest.js 服务器后,nuxt.js 页面显示旧数据(单击时)。我必须在浏览器中重新加载整个页面,才能让 Apollo-Client 获取新数据。
我尝试向 nuxt.config.ts 添加“无缓存”标志和“仅网络”标志,但没有成功:
apollo: {
defaultOptions: {
$query: {
loadingKey: 'loading',
fetchPolicy: 'no-cache'
}
},
clientConfigs: {
default: {
httpEndpoint: 'http://localhost:4000/graphql',
wsEndpoint: 'ws://localhost:4000/graphql'
}
}
}
Run Code Online (Sandbox Code Playgroud)
获取猫的函数:
private getCats() {
this.$apollo.query({ query: GET_CATS_QUERY }).then((res:any) => {
alert(JSON.stringify(res.data, null, 0));
});
}
Run Code Online (Sandbox Code Playgroud)
如何禁用缓存或是否有其他解决方案?
小智 7
我最近遇到了类似的问题,并通过创建一个覆盖默认客户端选项的 Nuxt 插件设法解决了这个问题:
// plugins/apollo-overrides.ts
import { Plugin } from '@nuxt/types';
const apolloOverrides: Plugin = ({ app }) => {
// disable caching on all the queries
app.apolloProvider.defaultClient.defaultOptions = {
query: {
fetchPolicy: 'no-cache',
},
};
};
export default apolloOverrides;
Run Code Online (Sandbox Code Playgroud)
不要忘记在 Nuxt 的配置中注册它:
// nuxt.config.js
export default {
...
plugins: [
'~/plugins/apollo-overrides',
],
...
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2647 次 |
| 最近记录: |