react-query:是否有一个回调,无论 getQuery 是否被缓存都可以触发?

时间:2021-01-28 01:43:53

标签: reactjs use-effect react-query

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

1 个答案:

答案 0 :(得分:2)

<块引用>

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

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

如果要转换数据或订阅部分数据,请使用 selectuseQuery 选项:

const { data } = useQuery(key, fn, { select: data => data.map(...) })

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

const { data } = useQuery(...)

const articles = useMemo(() => data?.map(...), [data])
// work with articles from here on

你也可以把它很好地放在自定义钩子中。

相关问题