【问题标题】:How to invalidate react-query whenever state is changed?每当状态更改时如何使反应查询无效?
【发布时间】:2023-02-01 21:05:04
【问题描述】:

每当某个状态发生变化时,我都会尝试使用 react-query 重新获取我的用户数据。但是当然我不能在一个钩子中使用一个钩子,所以我不知道如何设置对这个状态的依赖。

当前获取用户的代码是:

const {data: userData, error: userError, status: userStatus} = useQuery(['user', wallet], context => getUserByWallet(context.queryKey[1]));

这很好用。但是我需要在全局状态钱包更改时使它失效。我想我可以做类似的东西

useEffect(
    () => {
        useQueryClient().invalidateQueries(
            { queryKey: ['user'] }
        )
    },
    [wallet]
)

但这不起作用,因为 useQueryClient 是一个钩子,不能在回调中调用。

关于如何解决这个问题的任何想法?

一般的想法是钱包可以随时在应用程序中更改,可以连接到不同的用户。因此,每当钱包状态发生变化时,都需要获取该用户。

谢谢

【问题讨论】:

    标签: reactjs react-hooks react-query


    【解决方案1】:

    useQueryClient 返回对象,您可以稍后使用。

    例如:

    const queryClient = useQueryClient()
    
    useEffect(
        () => {
            queryClient.invalidateQueries(
                { queryKey: ['user'] }
            )
        },
        [wallet]
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-25
      • 2021-04-11
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 2021-12-26
      相关资源
      最近更新 更多