操作系统:Windows 10 Pro
阿波罗客户端:2.6.3
阿波罗升压:0.1.16
谁能解释为什么我收到以下错误消息?
在查询中找到@client指令,但没有ApolloClient解析器 指定。这意味着已经对ApolloClient本地解析程序进行了处理 禁用,@ client指令将传递到您的链接 链。
当我如下定义我的ApolloClient时:
return new ApolloClient({
uri: process.env.NODE_ENV === 'development' ? endpoint : prodEndpoint,
request: operation => {
operation.setContext({
fetchOptions: {
credentials: 'include',
},
headers: { cookie: headers && headers.cookie },
});
},
// local data
clientState: {
resolvers: {
Mutation: {
toggleCart(_, variables, { cache }) {
// Read the cartOpen value from the cache
const { cartOpen } = cache.readQuery({
query: LOCAL_STATE_QUERY,
});
// Write the cart State to the opposite
const data = {
data: { cartOpen: !cartOpen },
};
cache.writeData(data);
return data;
},
},
},
defaults: {
cartOpen: false,
},
},
});
答案 0 :(得分:1)
来自docs:
如果您希望将本地状态处理功能与Apollo Client <2.5集成在一起,请参阅我们(现已弃用)的apollo-link-state项目。从Apollo Client 2.5开始,本地状态处理已纳入核心,这意味着不再需要使用apollo-link-state
clientState
配置选项仅与apollo-link-state
一起使用。您需要将解析器直接添加到配置中,如文档所示:
new ApolloClient({
uri: '/graphql',
resolvers: { ... },
})
还要注意,不再有defaults
选项-应该通过直接在缓存实例上调用writeData
来初始化缓存(请参见here)。
我建议您浏览最新的文档,并避免使用外部来源的任何示例(例如现有的存储库或教程),因为这些示例可能已过时。