问题标签 [react-apollo-hooks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apollo - 如何使用 readQuery 和 writeQuery 从 Apollo GraphQL 客户端删除缓存记录
Apollo GraphQL 团队表示 readQuery 和 writeQuery 适用于 95% 的用例。我正在使用useMutation
并且update
想要从缓存中删除一个项目而无需调用refetchQueries
. 我的代码如下:
从 readQuery 返回的内容让我认为我应该过滤 speaker.datalist 但是当我这样做时,缓存不会更新。
更新缓存以反映从 GET_SPEAKERS 查询中删除的记录的正确方法是什么。
和 GET_SPEAKERS
reactjs - 打字稿错误未使用 useState 钩子定义
我是 graphql 的新手,所以我决定遵循本指南。
但是查询时出现错误(步骤 7):
这是组件:
但是当我使用它时它可以工作
像这样 :
当然,我已经删除setUsers
了useEffect()
钩子。
我注意到我必须在我的.tsconfig.json
文件中将 strict 设置为 false。
我想知道为什么我不能使用 setUsers 钩子?为什么我得到这个错误以及如何解决它?
谢谢!
reactjs - 调用函数后如何获取useLazyQuery挂钩数据
我试图在提交表单/onClick 后调用 useLazyQuery,但由于某种原因,我总是不确定。这是我定义我的钩子的方式;
如何获取someData
变量中的查询数据?
react-apollo - Apollo 客户端:更新缓存时的 writeFragment 或 readFragment?
在update
useMutation 的钩子中,Apollo 的文档建议使用writeFragment
来获取对新添加对象的内部引用。我觉得这很奇怪,因为该对象已经存在于缓存中。所以我测试了它,readFragment
果然,它运行良好。在这个用例中是否有使用writeFragment
over的偏好readFragment
?
示例 1:
https://www.apollographql.com/docs/react/data/mutations/#making-all-other-cache-updates
该页面的摘录:
在 cache.writeFragment 的帮助下,我们获得了对添加的 todo 的内部引用,然后将该引用存储在 ROOT_QUERY.todos 数组中。
示例 2:
该页面的摘录:
该评论已通过 useMutation 添加到缓存中。因此,cache.writeFragment 返回对现有对象的引用。
我还在 Apollo Client 的讨论板 ( https://github.com/apollographql/apollo-client/discussions/7515 ) 上发布了这个问题,但没有得到回复。
reactjs - 变异不是函数吗?
我想通过使用 graphql 来使用社交登录。我想通过使用 kakaologin 函数从社交登录中获取 accessToken,然后我使用它通过使用 kakakoLoginMutation 函数来制作令牌。
我尝试将 const 名称设为 access_token(=="123"),如果我成功通过 kakao 登录,我会通过 authObj 获得 accss_token。然后我使用 setAccess_token(useState) 将其设置为 const access_token。
console.log(authObj.access_token) 显示正确的字符串。但在 setAccess_token(authObj.access_token) 之后,console.log(access_token) 显示“123”。
我认为 console.log(access_token) 必须显示不是“123”其他字符串。另一个错误是 KakaoLoginMutation is not a function。
查询.js
reactjs - UseEffect 不会在第二次更改时触发,但会在启动时触发两次。(React hooks 和 apollo-graphql hooks)
useEffect
不会在第二次更改时触发,但会在启动时触发两次(React 挂钩和 apollo-graphql 挂钩)。在 console.logs 中,我描述了何时触发更改以及何时不触发更改。我没有更多线索要补充。
这是我的页面(Next.js 页面)
以及我获取道具并触发 refetchSessions 的组件部分。
钩子是用 graphql-codegen(generated/graphql.tsx) 生成的:
这是架构(graphql/hall.graphql):
highcharts - 如何使用 react-hooks (useEffect) 缓冲流数据以便能够一次更新另一个组件以避免多次重新渲染?
如何使用 react-hooks (useEffect) 缓冲流数据以便能够一次更新另一个组件以避免多次重新渲染?
以下信息只是完整理解的附加背景。
最后,总体问题是如何通过使用 react useEffect 钩子去抖动 Apollo-Client graphql 订阅来减少 highcharts 重新渲染
我正在使用 apollo-client 构建一个反应应用程序来加载数据。我使用 graphql 订阅,因为数据是惰性的,并且会实时更新,因此可以流式传输新数据。目前我正在使用 useEffect ,它为每个到达的新数据调用一次。
假设我有一个 ui 组件,例如 highcharts(带有 react-highcharts-official 包装器的具体 HighStock)图,它具有较长的重新渲染重绘时间,但能够一次应用多个更改。因此,我喜欢通过合并和去抖动来减少重绘,因此它会立即更新。
什么是反应钩子在一定时间内收集数据的最聪明的方法,例如在某些数据到达后将每个响应的滑动窗口延长 200 毫秒,但最多将其延长到 1 秒。在进行重绘时,不要开始另一次重绘。因此,如果有新数据到达,则最多每秒重绘一次图表,但如果较长时间没有数据到达,则更早。将所有更改应用到 Highcharts 并一次性渲染。
使用 angular 和 rxjs,我将创建一个 mergeMap 以使用 Chart.setData(data, false) 将每个数据提供给 Highcharts 以提供数据而无需重新渲染。如果我要随着时间的推移收集数据,我会使用缓冲区。此外,在没有新数据但最近每 1 秒重绘 200 毫秒后,将订阅去抖动和小跑以重绘图表(或发出缓冲区)。
graphql - 如何使用缓存优先/缓存和网络在缓存失效后重新获取 apollo watchQuery
我有一些很少更新的元数据,但它可以偶尔更新一次。在我的应用程序中,用户非常频繁地访问这些信息,这给我的服务器带来了相当大的负载。
我只想重新取回它,例如每天一次以检查是否有变化。
我的预期行为是 watchQuery 应该立即返回,即使缓存已过期。仅当缓存过期时,它才会重新获取以更新缓存
这有可能吗?
我的第一个想法是告诉 cache-and-network 或 cache-first 仅在最后一次网络检查超过一天或缓存失效时才使用网络,但在文档中找不到任何内容。
Thx 我非常感谢您的专业知识。
reactjs - UseMutation 和 RefetchQueries:避免多次调用 react-apollo 的 api
在使用 RefetchQueries 进行变异时,我在页面中遇到了一些问题。
我有一个带有复选框的项目列表
ItemList(父组件),ToolBar(子组件)
在子组件中,我有一个删除按钮,可以在从项目列表中选择项目后单击该按钮。我通过道具将选定的项目传递给子组件。
单击删除按钮时,它应该调用getTransactions查询。根据结果,如果有任何交易可用,我必须显示模式并单击“确定”我必须删除这些项目。
在删除多个项目时,我必须检查所选项目是否有可用的交易。
现在删除工作正常,但突变 api 调用多次,查询 api 调用多次。我无法弄清楚。
如果我更改 if(data) 中的 if else 语句,则会给出错误cannot update during state transition。
请帮助实现目标。
react-native - React Native应用程序中的应用程序状态更改时如何防止apollo useQuery钩子重置?
我使用 Apollo 客户端在我的 React Native 应用程序中访问我的 GraphQL 端点。
在各种屏幕中,我使用 useQuery 挂钩查询数据。这是我的一个屏幕中的示例:
我面临的问题是,每次我离开应用程序(从而将应用程序置于后台)时,查询都会重置。当我回到应用程序(从而将应用程序置于前台)时,加载设置为 true,数据设置为未定义。
这会产生一种行为,每次用户离开应用程序并返回时,屏幕似乎都会重新加载。理想情况下,屏幕不会重新加载,用户只需从她离开的地方继续。
如何防止每次应用状态更改时重新加载查询?非常感谢!