如何从另一个 API reducers RTK 查询自动重新获取 API?

问题描述 投票:0回答:2

我有 2 个 api reducer,boardApi 和 taskApi。

boardApi 包含 3 个查询 getBoards , getBoardById, & addBoard.

taskApi 有 2 个突变,addTask & deleteTask.

如何在每次添加或删除任务时重新获取 getBoardById

boardApi

export const apiBoardSlice = createApi({
  reducerPath: 'apiBoardSlice',
  baseQuery: fetchBaseQuery({
    baseUrl: API_URL,
    prepareHeaders: headers => headers.set('Authorization', `Bearer ${token}`)
  }),
  tagTypes: ['Boards'],
  endpoints: (builder) => ({
    getBoards: builder.query({
      query: () => 'board',
      providesTags: ['Boards'],
    }),
    getBoardById: builder.query({
      query: (id) => `board/${id}`,
      providesTags: ['Boards'],
    }),
    addBoard: builder.mutation({
      query: payload => ({
        url: 'board',
        method: 'POST',
        body: payload,
      }),
      invalidatesTags: ['Boards'],
    }),
  }),
})

任务API

export const apiTaskSlice = createApi({
  reducerPath: 'apiTaskSlice',
  baseQuery: fetchBaseQuery({
    baseUrl: API_URL,
    prepareHeaders: headers => headers.set('Authorization', `Bearer ${token}`)
  }),
  endpoints: (builder) => ({
    addCard: builder.mutation({
      query: ({ listId, title, boardId }) => ({
        url: `task/${boardId}`,
        method: 'POST',
        body: { title, listId },
      }),
    }),
  }),
})

reactjs redux react-redux redux-toolkit rtk-query
2个回答
0
投票

那些不应该是两个api。通常,很少有情况会在您的应用程序中有两个不同的 api——这不是其中之一。

两者甚至具有相同的基本 url 和应用程序逻辑——它们应该是同一 api 上的多个端点。

至于你的问题:你不能做自动跨API失效。如果你想使另一个 api 的一个端点无效,这是两个端点属于同一个 api 的明显标志。


0
投票

不要使用 createApi 两次。

combineReducers 您可以在所有组合的减速器中使用所有声明的标签。

所以你可以简单地在两个任务突变中使用:

invalidatesTags: ['Boards']
© www.soinside.com 2019 - 2024. All rights reserved.