首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WAGMI库中的“watch”和“cacheOnBlock”有什么区别?

WAGMI库中的“watch”和“cacheOnBlock”有什么区别?
EN

Ethereum用户
提问于 2022-09-26 14:39:47
回答 1查看 269关注 0票数 0

我在一个web应用程序中使用WAGMI,当区块链状态发生变化时,我看到在我的应用程序中读取更新值的速度有点慢。查看文档,我在useContractReads方法中看到了两个可能相关的选项:'watch‘和'cacheOnBlock’。

我的猜测是,每当新块到达且值发生更改时,watch都会自动更新值,cacheOnBlock说返回的数据是基于当前块号缓存的,因此它似乎立即被认为是“陈旧的”,但我想您必须手动获取更新吗?

是否有人能提供一些额外的上下文或场景来说明这些选项何时有用?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-12-10 00:15:12

当使用useContractRead()钩子时,有几个选项告诉它从块链中获取数据的频率。

你所链接的文档很好地概括了它。

watch将检查每个块的更改,如果您不编写自定义钩子或条件逻辑,快速链上的这些更改可能会导致RPC端点的速率限制问题(下面将详细介绍)。除非另有说明,否则您将其设置为“始终阅读”。如果您正在设置一个应用程序来寻找套利机会或需要对其采取行动,但这会大大降低NFT造币网站上获取最后一个令牌ID的速度,这将是有帮助的。

cacheOnBlock再一次做的正是文档中说的那样。它以块时间将数据写入缓存,在该块之后被认为是“陈旧的”。除非触发刷新,否则只需读取,并将其存储到缓存中。可以使用cacheTime或“staleTime”来确定数据在缓存中的保存时间(以ms为单位)。如果没有设置其他逻辑,则cacheTime默认为0,这意味着您需要将enabled设置为false或编写自定义钩子以防止将其持续读取到缓存。staleTime是指数据被认为过时的时间(以ms为单位),并且可以在0Infinity之间设置。

wagmi中有很多变量决定了应该查询链的频率,它们可以一起用于微调应用程序。

如果要限制查询数据的频率,需要考虑的另一个重要变量是refetch变量,它可以从读取钩子中有条件地查询逻辑。

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

https://ethereum.stackexchange.com/questions/136386

复制
相关文章

相似问题

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