reactjs - Typfel vid tillägg av providesTags i RTK Query


Jag försöker ställa in cache-invalidering för mitt projekt med RTK Query, men jag får ett typfel när jag följer den officiella dokumentationen. Målet är att ogiltigförklara enskilda objekt i den hämtade listan över resurser, men jag fastnar bara när jag försöker ange en allmän tagg:

import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';

export const remoteScriptsApi = createApi({
    baseQuery: fetchBaseQuery({
        baseUrl: '/api', prepareHeaders: (headers) => {
            headers.set('Accept', 'plain/text, application/json');
            return headers;
        }
    }),
    endpoints: (builder) => ({
        getScenes: builder.query<number[], void>({
            query: () => ({ url: '/scenes' }),
            providesTags: ['Scenes']
        }),
    })
})

De ['Scener'] blir understrukna och visar följande felmeddelande:

Type 'string' is not assignable to type 'FullTagDescription<never>'.ts(2322)

Jag är ganska ny på TypeScript, men jag har ändå försökt gräva i typfilerna för RTK Query för att ta reda på var och varför "never" förväntas. Men ingen tur.

Låt mig veta om mer bakgrund om mitt projekt och/eller kod behövs! Tack!

Svar #1

Jag är inte tillräckligt bekant med API i RTK, men jag lekte lite med TypeScript där och upptäckte att om du deklarerar tagTypes i ditt createApi-objekt löser det problemet:

export const remoteScriptsApi = createApi({
    baseQuery: fetchBaseQuery({
        baseUrl: '/api', prepareHeaders: (headers) => {
            headers.set('Accept', 'plain/text, application/json');
            return headers;
        }
    }),
    tagTypes: ['Scenes'], // <---- declare your tagTypes before you use them
    endpoints: (builder) => ({
        getScenes: builder.query<number[], void>({
            query: () => ({ url: '/scenes' }),
            providesTags: ['Scenes']
        }), ...

Relaterade artiklar