首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Next.js - SWR钩子关于dedupeInterval和refreshInterval的问题

Next.js - SWR钩子关于dedupeInterval和refreshInterval的问题
EN

Stack Overflow用户
提问于 2021-05-26 13:12:24
回答 1查看 1.1K关注 0票数 0

我第一次在next.js中使用SWR钩子,我试图得到一些关于某些东西的答案,但是我无法得到它们,即使是在文档中。

Questions:所以,我知道SWR提供了一个包含数据的缓存,并且它会实时更新,但是我有点迷失在两个选项之间--您必须使用钩子。所以,通常情况下,您有dedupeInterval和refreshInterval

代码语言:javascript
代码运行次数:0
运行
复制
refreshInterval = 0: polling interval (disabled by default)
dedupingInterval = 2000: dedupe requests with the same key in this time span

那么,这两者有什么区别呢?如果我有两个密钥相同的请求,它将在两秒钟后更新吗?它和refreshInterval一样吗?如果我使用refreshInterval,我的性能会有问题吗?因为它在很短的时间内提出了一个请求

如果你能帮我,那就太好了!

谢谢你抽出时间!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-28 21:13:30

那么,这两者有什么区别呢?

不同之处在于:

  • refreshInterval正在定义一个时间,在此之后,将发送一个新的请求来更新您的数据。例如:每一秒。
  • dedupeInterval正在定义一段时间,在此期间,如果已经发送了对特定数据的请求(即。一个具有特定键的数据),当呈现请求刷新该数据的新请求的组件时,刷新将不会执行。

去重复意味着消除重复。提出潜在的更少的要求,而不是更多。它们为他们的文档中的一个例子提供一个组件,该组件呈现5倍于另一个名为<Avatar />的组件,该组件使用swr钩子。但是实际的请求将只提出一次,因为呈现将在默认的2秒时间范围内进行。

如果我有两个密钥相同的请求,它将在两秒钟后更新吗?它和refreshInterval一样吗?

不,设置为2秒的dedupeInterval不会自动更新数据。只有当使用带有swr钩子的相同键的组件在2秒后被重命名时,它才会更新它。或者,如果您还没有禁用其他更新机制,比如on和用户将焦点放在您的组件上。

使用refreshInterval时,只要组件仍然被挂载,就会有一个API调用,即使它没有重登,用户也不与它交互。

如果我使用refreshInterval,我的性能会有问题吗?因为它是在很短的时间内提出要求的。

是的,如果用户打开页面,只在20秒内读取内容,并且您已经将refreshInterval设置为1秒,那么在此期间将有20个API调用来更新该数据。如果您的数据每隔几秒钟更改一次,并且需要更新UI,则这种行为可能很有用。但很明显,这可能是一个性能问题。

默认情况下禁用refreshInterval,而dedupeInterval设置为2秒的原因是为了避免过多的API调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67705669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档