开发者问题收集

在 RTK 查询中添加提供标签时输入错误

2022-02-15
9758

我正尝试使用 RTK Query 为我的项目设置缓存失效,但按照官方文档操作时出现类型错误。目标是使获取的资源列表中的各个项目失效,但我在尝试提供一个通用标签时遇到困难:

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']
        }),
    })
})

['Scenes'] 带有下划线,显示以下错误消息:

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

我对 TypeScript 还很陌生,但我仍然尝试深入研究 RTK Query 的类型文件,以找出需要“never”的位置和原因。但是没有运气。

如果需要有关我的项目和/或代码的更多背景信息,请告诉我!谢谢!

1个回答

我对 RTK 中的 API 不够熟悉,但我在那里玩了一下 typescript,发现如果你在 createApi 对象中声明 tagTypes ,就可以解决问题:

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']
        }), ...
Oro
2022-02-15