Skip to content

Query invalidation in mutations does not work properly #202

@mickeywu

Description

@mickeywu

Current Behavior

In the DataConnect React library, query invalidation in mutations doesn't work as described when passing in a reference instance without parameters.

As described in the documentation, if I pass in just the reference to the query, it should invalidate all queries cached:

const createMovie = useDataConnectMutation(createMovieRef, {
  invalidate: [getMovieRef],
});

This will actually also trigger a TypeScript error:

Type 'GetMovieRef' is not assignable to type 'QueryRef<unknown, unknown> | (() => QueryRef<unknown, unknown>)'.
  Type 'GetMovieRef' is not assignable to type '() => QueryRef<unknown, unknown>'.
    Target signature provides too few arguments. Expected 1 or more, but got 0.ts(2322)

Even after ignoring the TS error, the query does not get invalidated after the mutation executes in the app.

However, it works as intended if a parameter is specified to invalidate a specific record:

const createMovie = useDataConnectMutation(createMovieRef, {
  invalidate: [getMovieRef({ id: "1" })],
});

Expected Behavior

Passing in a query reference without parameters to the invalidate option in mutations should invalidate ALL of its cached queries.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Opened

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions