我已经创建了一个阿波罗服务器,现在正在前端工作。我当前的堆栈是Nuxtjs / Nuxt-apollo / Apollo-server,并且选择使用Apollo的缓存进行本地状态管理,而不是使用vuex。
我已经能够连接到我制作的阿波罗服务器,在服务器上以及通过缓存运行查询和变异。但是,对于何时应该使用 @client 指令,我感到非常困惑。我认为这更多是因为我无法看清全局,所以我将分解我的思考过程。
1)您运行查询/突变,并将其放入浏览器缓存。
2)现在,您可以从缓存访问该查询/突变并运行它,而不必使用client.readQuery和writeQuery调用服务器。 (在阅读官方文档时,我可能已经不正确理解这一点。)
3)@client指令用于管理状态,并将其放置在要缓存的任何字段旁边。这也仅适用于缓存和本地解析器。这些是自定义的吗?但是从我的经验来看,这似乎覆盖了缓存内部的ROOT_QUERY,ROOT_MUTATION?这似乎有点违反直觉?
为使我的问题更加具体和模糊, 何时 我应该使用readQuery / writeQuery / readFragment / writeFragment和@client指令。如果可能的话尽可能地外行?