You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Query v4中在useMutation的onSuccess内调用setQueryData是否可行?

在React Query v4中,useMutation的onSuccess内调用setQueryData是否可行?

首先明确:官方文档提到的「onSuccess不再从setQueryData触发」规则仅针对useQuery,和useMutation无关。

在v3中,useQuery的onSuccess会在两种场景触发:一是初始查询/重新查询成功,二是通过setQueryData手动更新该查询的缓存时。但v4调整了这个逻辑,useQuery的onSuccess现在只在查询(或refetch)成功获取数据时触发,手动调用setQueryData更新缓存不会再触发它——这个变更和useMutation的onSuccess完全没关系。

回到你的场景:在useMutation的onSuccess里调用setQueryData更新缓存是完全可行且推荐的做法,在v4中没有任何问题。

你的示例代码逻辑是合理的:当更新帖子标题的mutation成功后,直接用返回的新帖子数据更新对应['posts', id]的缓存,这种方式避免了额外的refetch请求,是React Query中处理mutation后缓存更新的常规手段之一,不会引发异常或不符合v4规范的问题。

内容的提问来源于stack exchange,提问作者ajm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:24:51