1

我正在为我的应用程序的 API 请求使用 RTK 查询。到目前为止,一切都很顺利!我已经按照文档来提供标签并使它们无效,但我面临着一种奇怪的行为。以下是两个相关端点的代码:

export const api = createApi({
    /*** code omitted for brevity ***/

    tagTypes: ["Post"],
    endpoints: (builder) => ({
        getPost: builder.query({
            query: (id) => ({
                url: `posts/${id}`,
                method: "GET",
            }),
            providesTags: (result, error, id) => [{ type: "Post", id }],
        }),
        bookmarkPost: builder.mutation({
            query: (id) => ({
                url: `posts/bookmark/${id}`,
                method: "POST",
            }),
            invalidatesTags: (result, error, id) => [{ type: "Post", id }],
        }),
    }),
});

现在获取数据工作得很好。但是,当bookmarkPost请求成功时,标记getPost不会自动重新获取。

getPost仅当我手动设置id属性时,标记才有效。例如[{ type: "Post", id: "TOPIC" }]. 或者,如果我将标签作为一个整体定位["Post"]

我的数据库中的id部分是 aGuid所以我怀疑这可能是一个问题(假设文档说明id应该是字符串或数字)并且我将其规范化为不带破折号的字符串。但即使这样做也不会触发失效。

我在这里错过了什么吗?

4

1 回答 1

0

拉了一些头发后,我意识到providesTags(大写)中的字符串大小写与(小写)中的字符串大小写不匹配invalidatesTagsGuid无论如何都会转换为字符串‍♂️</p >

于 2021-10-08T08:02:54.750 回答