React Native 如何使另一个组件的useQuery缓存失效?

pftdvrlh  于 2023-01-27  发布在  React
关注(0)|答案(1)|浏览(122)

我有一个父组件,它需要使子组件的查询缓存无效:

const Child = () => {
    const { data } = useQuery('queryKey', () => fetch('something'))
    return <Text>{data}</Text>
}

const Parent = () => {
    const queryClient = useQueryClient()
    useEffect(() => {
        console.log('Clean up happened')
        return () => queryClient.invalidateQueries(['queryKey'])
    })

    return <Child />
}

我可以看到Clean up happpened已经注销,但是queryKey的查询缓存没有失效。
我使用#invalidateQueries的方式有什么问题吗?或者一个组件(子组件)的查询缓存不能被另一个组件(父组件)失效

rxztt3cl

rxztt3cl1#

official documentation中,您应该用途:

const Parent = () => {
    const queryClient = useQueryClient()
    useEffect(() => {
        console.log('Clean up happened')
        return () => {
            queryClient.invalidateQueries({ queryKey: ['queryKey'] })
        };
    })

    return <Child />
}

当然,如果您使用的是最新版本的话。

相关问题