问题标签 [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.

0 投票
1 回答
929 浏览

reactjs - 期望 SWR 库返回缓存数据但没有发生

我正在使用 Vercel SWR 挂钩 usrSWR,我希望我可以在某个遥远的组件中获取存储在缓存中的数据,而不必使用上下文或其他一些全局状态管理器。

具体来说,我IndexPage使用initialData设置缓存数据,我可以看到data返回是正确的,但是当我尝试从数据中检索相同的数据时,OtherComponent返回为未定义。

我在这里有代码和框中的代码: https ://codesandbox.io/s/useswr-global-cache-example-forked-8qxh7 ?file=/pages/index.js

0 投票
2 回答
2451 浏览

graphql - 我可以将 useSWR 与 apollo-client 一起使用吗?

我对所有 next.js graphQL 世界都很陌生。

我刚刚找到了 useSWR,我想知道我是否可以将它与 Apollo-client 一起使用,而不是与 graphql-request 一起使用。

0 投票
1 回答
3262 浏览

javascript - 使用 SWR 和 fetch api 的类型安全数据获取钩子?

我试图弄清楚是否有一种方法可以为我的 React 应用程序抽象出我使用 Typescripts 泛型创建的数据获取钩子。不幸的是,我对 Typescript 的理解不如我希望的那么好,所以我陷入了困境。

我使用的钩子基于我正在使用的数据获取库 SWR 给出的示例。他们有一个我想在他们的存储库中构建的示例,但它使用的是 Axios,而我使用的是 fetch(或者确切地说是 isomorphic-unfetch)。

明确地说,我有useUsers钩子从我的用户端点获取所有用户,如下所示:

使用的 fetcher 函数直接从他们的一个打字稿示例中复制而来,我使用 Prisma 作为我的 ORM,因此我可以通过它访问类型。该User类型具有电子邮件和姓名等字段。

我有另一个几乎相同的钩子来从我的项目端点获取单个项目:

我想做的是有一个钩子(我们称之为 useRequest,就像在 SWR 示例中一样),我可以获取我需要的大部分数据。使用常规 Javascript,我可能会这样写:

但是,当我想将它用于多种不同的数据类型时,我将如何在 Typescript 中执行此操作?我考虑过为此使用泛型,但我不确定这是否是解决此问题的正确方法。

0 投票
0 回答
86 浏览

javascript - 错误重试策略和函数参数绑定

我想让我的 swr 状态突变能够抵御网络错误并支持某种重试功能。

基本上我所做的是在我的 useSWR 驱动的反应钩子中:

我生成了一个新的 Error 对象,该对象具有retryUI 代码可以使用的函数来显示 toast 以便稍后重试操作(在用户交互时)。

我想知道当时retry()是否会调用 setFavourite 的依赖项仍然有效。我猜不是,因为它们依赖于data并且如果这种变化,那么setFavourite也会重新生成。

以前有人实施过这种重试吗?

0 投票
1 回答
934 浏览

next.js - 在 nextJS 应用程序中,使用 SWR 通过 SSR 刷新预取数据是一种好习惯吗?

让我们假设以下页面:

知道任务在不断更新,对性能是否正确?
我找不到任何关于此的文档。(或者至少,理解)

0 投票
1 回答
2103 浏览

reactjs - 在无限的帖子列表中更新单个帖子创建者的详细信息时,React-Query/SWR 与全局状态(例如 Redux、Zusand)

在我的应用程序中,我有一个分页提要,其中包含从 /feed 端点检索到的帖子。

每个饲料post都有...

  • postId
  • postTitle
  • postBody
  • postCreator(目的)

每个postCreator对象都有...

  • userId
  • userName
  • userBio
  • userImageUrl

正如 Redux 所建议的,我目前...

  • 提取postCreator对象并将它们存储在自己的全局中usersStore(使用 Zusand)
  • 在每篇文章中用相关的(在全局中引用用户)替换postCreator对象postCreatorIdusersStore
  • 将帖子存储在自己的位置postsStore(使用 Zusand)

这样做的好处是...

  • 如果用户更新了他们的信息(例如姓名或简历),我们只需更新他们在 usersStore 中的记录,他们的信息将在整个应用程序中更新(他们在提要帖子 UI 中的帖子创建者信息,他们在标签栏等)
  • 我们不必从 /feed 端点重新请求数据来获取包含更新postCreator对象的帖子。特别是考虑到用户可能在那个时间点向下滚动了提要,所以我们可能不得不从 /feed 端点获取数百个帖子,给我们的后端带来压力。

反应查询/SWR

我最近发现了 React Query 和 SWR,并且听说了很多关于它们如何“消除对全局状态的大部分需求”的信息,但我对它们如何处理上述情况感到有些困惑。在对 React-Query 进行了一些研究之后,我的印象是有几种方法可以处理这个......

  1. 如上所述,仍然使用全局usersStore和在单个位置更新用户信息。postStore

  2. 报废全局usersStore,并postCreator直接在 React-Query 的缓存中更新/feed无限查询的信息,使用queryClient.setQueryData. 但是我们还必须更新返回用户信息的其他查询缓存,如果缓存过期怎么办?

  3. 废弃 global usersStore,并在用户更新其信息时从 /feed 端点重新获取所有帖子。但是,如果用户在那个时间点向下滚动了提要,我们可能不得不从 /feed 端点获取数百个帖子,给我们的后端带来压力。React-Query 无限查询重新获取文档

使用 React-Query/SWR 处理此问题的最佳实践方法是什么?

0 投票
1 回答
92 浏览

java - 将数组发送到 Micronaut Graphql 以从 ReactJS 查询

我正在尝试将一组字符串从 reactjs 发送到 micronaut,以测试数据是否成功传递,我在前端有这样的东西:

我的 micronaut 后端看起来像这样:

我可以打印年龄,但名称打印为空。难道我做错了什么?我尝试使用 ArrayList 代替 List,仍然无法正确接收名称。希望您能提供帮助。谢谢!

0 投票
1 回答
1615 浏览

reactjs - useSWR - 如何传递配置对象来获取

我正在尝试将useSWR集成到我正在处理的下一个 js 项目中。

我想将配置作为参数传递给 fetcher。我已阅读文档中的多个参数

但由于某种原因它没有返回数据。它正在发出 api 请求,我可以在网络选项卡中看到它。

不知道该怎么做。

有什么建议么?

0 投票
0 回答
140 浏览

javascript - 如何从 useSWRPages 重写为 useSWRInfinite?

我想从 SWR 0.22 升级到 0.55,但 useSWRPages 已被弃用,所以我将被迫使用 useSWRInfinite,但我无法理解如何重写我当前的函数以使用 useSWRInfinite。我如何重写它以使用 useSWRInfinite 来无限加载仍然受支持?

0 投票
0 回答
725 浏览

reactjs - 如何使用具有多个键但类型相同的对象数组的 SWR 变异函数

我被 Vercel 的 SWR 变异系统困住了。我将尝试解释我的情况,我希望我能做到。

我正在开发一个社交媒体应用程序,它类似于 Instagram 和 Twitter 的组合。我们这里有一个奇怪的 RestAPI 设计。例如,我们有三个端点,假设 A、B、C。它们都返回相同类型的对象数组(post[]),并为这些端点提供三个路由。

如您所见,我需要更新缓存数据,但我不知道如何将正确的 SWR 密钥传递给该删除处理程序中的 mutate 函数。最后,由于 API 设计,我有很多密钥。另外,我也使用useSWRInfinite它,它在向下滚动时会生成新键。

我们正在使用 NextJS React 框架。