问题标签 [swr]
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.
reactjs - 期望 SWR 库返回缓存数据但没有发生
我正在使用 Vercel SWR 挂钩 usrSWR,我希望我可以在某个遥远的组件中获取存储在缓存中的数据,而不必使用上下文或其他一些全局状态管理器。
具体来说,我IndexPage
使用initialData设置缓存数据,我可以看到data
返回是正确的,但是当我尝试从数据中检索相同的数据时,OtherComponent
返回为未定义。
我在这里有代码和框中的代码: https ://codesandbox.io/s/useswr-global-cache-example-forked-8qxh7 ?file=/pages/index.js
graphql - 我可以将 useSWR 与 apollo-client 一起使用吗?
我对所有 next.js graphQL 世界都很陌生。
我刚刚找到了 useSWR,我想知道我是否可以将它与 Apollo-client 一起使用,而不是与 graphql-request 一起使用。
javascript - 使用 SWR 和 fetch api 的类型安全数据获取钩子?
我试图弄清楚是否有一种方法可以为我的 React 应用程序抽象出我使用 Typescripts 泛型创建的数据获取钩子。不幸的是,我对 Typescript 的理解不如我希望的那么好,所以我陷入了困境。
我使用的钩子基于我正在使用的数据获取库 SWR 给出的示例。他们有一个我想在他们的存储库中构建的示例,但它使用的是 Axios,而我使用的是 fetch(或者确切地说是 isomorphic-unfetch)。
明确地说,我有useUsers
钩子从我的用户端点获取所有用户,如下所示:
使用的 fetcher 函数直接从他们的一个打字稿示例中复制而来,我使用 Prisma 作为我的 ORM,因此我可以通过它访问类型。该User
类型具有电子邮件和姓名等字段。
我有另一个几乎相同的钩子来从我的项目端点获取单个项目:
我想做的是有一个钩子(我们称之为 useRequest,就像在 SWR 示例中一样),我可以获取我需要的大部分数据。使用常规 Javascript,我可能会这样写:
但是,当我想将它用于多种不同的数据类型时,我将如何在 Typescript 中执行此操作?我考虑过为此使用泛型,但我不确定这是否是解决此问题的正确方法。
javascript - 错误重试策略和函数参数绑定
我想让我的 swr 状态突变能够抵御网络错误并支持某种重试功能。
基本上我所做的是在我的 useSWR 驱动的反应钩子中:
我生成了一个新的 Error 对象,该对象具有retry
UI 代码可以使用的函数来显示 toast 以便稍后重试操作(在用户交互时)。
我想知道当时retry()
是否会调用 setFavourite 的依赖项仍然有效。我猜不是,因为它们依赖于data
并且如果这种变化,那么setFavourite
也会重新生成。
以前有人实施过这种重试吗?
next.js - 在 nextJS 应用程序中,使用 SWR 通过 SSR 刷新预取数据是一种好习惯吗?
让我们假设以下页面:
知道任务在不断更新,对性能是否正确?
我找不到任何关于此的文档。(或者至少,理解)
reactjs - 在无限的帖子列表中更新单个帖子创建者的详细信息时,React-Query/SWR 与全局状态(例如 Redux、Zusand)
在我的应用程序中,我有一个分页提要,其中包含从 /feed 端点检索到的帖子。
每个饲料post
都有...
postId
postTitle
postBody
postCreator
(目的)
每个postCreator
对象都有...
userId
userName
userBio
userImageUrl
正如 Redux 所建议的,我目前...
- 提取
postCreator
对象并将它们存储在自己的全局中usersStore
(使用 Zusand) - 在每篇文章中用相关的(在全局中引用用户)替换
postCreator
对象postCreatorId
usersStore
- 将帖子存储在自己的位置
postsStore
(使用 Zusand)
这样做的好处是...
- 如果用户更新了他们的信息(例如姓名或简历),我们只需更新他们在 usersStore 中的记录,他们的信息将在整个应用程序中更新(他们在提要帖子 UI 中的帖子创建者信息,他们在标签栏等)
- 我们不必从 /feed 端点重新请求数据来获取包含更新
postCreator
对象的帖子。特别是考虑到用户可能在那个时间点向下滚动了提要,所以我们可能不得不从 /feed 端点获取数百个帖子,给我们的后端带来压力。
反应查询/SWR
我最近发现了 React Query 和 SWR,并且听说了很多关于它们如何“消除对全局状态的大部分需求”的信息,但我对它们如何处理上述情况感到有些困惑。在对 React-Query 进行了一些研究之后,我的印象是有几种方法可以处理这个......
如上所述,仍然使用全局
usersStore
和在单个位置更新用户信息。postStore
报废全局
usersStore
,并postCreator
直接在 React-Query 的缓存中更新/feed
无限查询的信息,使用queryClient.setQueryData
. 但是我们还必须更新返回用户信息的其他查询缓存,如果缓存过期怎么办?废弃 global
usersStore
,并在用户更新其信息时从 /feed 端点重新获取所有帖子。但是,如果用户在那个时间点向下滚动了提要,我们可能不得不从 /feed 端点获取数百个帖子,给我们的后端带来压力。React-Query 无限查询重新获取文档
使用 React-Query/SWR 处理此问题的最佳实践方法是什么?
java - 将数组发送到 Micronaut Graphql 以从 ReactJS 查询
我正在尝试将一组字符串从 reactjs 发送到 micronaut,以测试数据是否成功传递,我在前端有这样的东西:
我的 micronaut 后端看起来像这样:
我可以打印年龄,但名称打印为空。难道我做错了什么?我尝试使用 ArrayList 代替 List,仍然无法正确接收名称。希望您能提供帮助。谢谢!
javascript - 如何从 useSWRPages 重写为 useSWRInfinite?
我想从 SWR 0.22 升级到 0.55,但 useSWRPages 已被弃用,所以我将被迫使用 useSWRInfinite,但我无法理解如何重写我当前的函数以使用 useSWRInfinite。我如何重写它以使用 useSWRInfinite 来无限加载仍然受支持?
reactjs - 如何使用具有多个键但类型相同的对象数组的 SWR 变异函数
我被 Vercel 的 SWR 变异系统困住了。我将尝试解释我的情况,我希望我能做到。
我正在开发一个社交媒体应用程序,它类似于 Instagram 和 Twitter 的组合。我们这里有一个奇怪的 RestAPI 设计。例如,我们有三个端点,假设 A、B、C。它们都返回相同类型的对象数组(post[]),并为这些端点提供三个路由。
如您所见,我需要更新缓存数据,但我不知道如何将正确的 SWR 密钥传递给该删除处理程序中的 mutate 函数。最后,由于 API 设计,我有很多密钥。另外,我也使用useSWRInfinite
它,它在向下滚动时会生成新键。
我们正在使用 NextJS React 框架。