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
相关产品推荐
相关产品推荐

