提问人:Marek Kostruski 提问时间:11/10/2023 更新时间:11/10/2023 访问量:21
在 electron.js 中使用 apollo 客户端时的重复请求
Duplicate requests when using apollo client in electron.js
问:
在 electron.js 中,我有具有两个 useQuery 钩子的基本组件。当组件重新渲染时,钩子会触发,并且应该在网络选项卡中产生 2 次调用。但是,有 3 个或有时 4 个请求。看起来 apollo 缓存不起作用。如果移除一个钩子并多次触发另一个钩子,则只有一个网络请求,缓存工作正常。 此问题出现在 dev 和 prod 中 - 安装软件包后
组件:
'const 测试 = () => { console.log('渲染....');
useGetUserQuery({
variables: {
id: 'SE',
},
});
useTagsQuery();
return null;
};`
传递给包装 Test 组件的 ApolloProvider 的客户端
'export const useClient = () => { const authToken = sessionStorage.getItem('token');
const httpLink = createHttpLink({
uri: 'https://api',
});
const authLink = setContext((_, { headers }) => {
return {
headers: {
...headers,
authorization: authToken ? `Bearer ${authToken}` : '',
},
};
});
return {
client: new ApolloClient({
link: authLink.concat(httpLink),
cache: new InMemoryCache(),
}),
};
};`
不确定这是否有任何价值,但两个查询响应具有相同的父__typename但除此之外完全不同。
当我在 Apollo Devtools 中预览“缓存”选项卡时,只有ROOT_QUERY,它只存储来自我的测试组件的两个查询中的第一个。
到目前为止,我已经尝试过: 反应 16 和 18 删除严格模式 将ApolloClinet评级降至3.3 更改提取和重新提取策略 我已经尝试了在这里找到的所有解决方案
我希望每个钩子都有一个调用
谢谢
答: 暂无答案
评论
useClient