Website-Suche

reactjs - queryCache.find() ist undefiniert


Ich habe ein Problem mit react query. Wenn ich einen Eintrag aus meiner Liste mit einer Mutation lösche, muss ich die Seite aktualisieren, um die Änderung zu sehen. Und wenn ich queryCache.find('key') versuche, erhalte ich undefined. Außerdem habe ich keine Methode queryCache.refetchQueries() (habe das in einem Tutorial gesehen, aber es scheint veraltet zu sein).

Hier ist mein Code:

const { data, status, error, refetch } = useQuery('posts', fetchPosts);

 const queryCache = new QueryCache();
 const query = queryCache.find('posts');

 console.log(query); // undefined

Hier ist eine Mutation:

 const mutation = useMutation(deletePost, {
        onSuccess:  () => {
            // can I here somehow do a refetch?
        }
    });

    const deleteOne = async (id: string) => {
      mutation.mutate(id)
    }

Warum erhalte ich 'undefined' und wie löse ich das Problem?

Antwort #1

Mit welcher Version von react-query arbeitest du? In v3, der neuesten Hauptversion, musst du mit queryClient anstelle von queryCache arbeiten:

const queryClient = useQueryClient()
const posts = queryClient.getQueryData('posts')

Für erneute Abrufe nach einer Mutation ist es im Allgemeinen am besten, Folgendes zu verwenden:

queryClient.invaliateQueries("posts")

So wird es auch in der Dokumentation angezeigt: invalidations-from-mutations

Verwandte Artikel