react-query: 是否有回调无论 getQuery 是否被缓存都会触发?

XIN*_* LI 5 reactjs use-effect react-query

我想在获取数据后执行一些副作用,例如 setState 和更新上下文。但是,当数据在缓存中时,onSuccess 不会执行。另外 useEffect 不起作用,因为如果数据被缓存,它不会从未定义的数据更改为真实数据。因此它也不会被触发。这样做的最佳方法是什么?谢谢

TkD*_*odo 3

\n

我的用例是从 useQuery 返回的数据中提取一些值,并在这些值上设置新状态。

\n
\n

通常,它们\xe2\x80\x99re不应该\xe2\x80\x99需要将状态从react-query复制到本地状态。这只会导致事实来源的重复。最好将它们分开,这样您也可以从后台更新中受益。

\n

如果您想转换数据或订阅部分数据,请使用select以下选项useQuery

\n
const { data } = useQuery(key, fn, { select: data => data.map(...) })\n
Run Code Online (Sandbox Code Playgroud)\n

或者,您可以根据返回的数据计算一些新数据useMemo,例如:

\n
const { data } = useQuery(...)\n\nconst articles = useMemo(() => data?.map(...), [data])\n// work with articles from here on\n
Run Code Online (Sandbox Code Playgroud)\n

您也可以将其很好地放入自定义挂钩中。

\n