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

tvokkenx  于 2023-04-12  发布在  其他
关注(0)|答案(2)|浏览(116)

我有两个API reducers,boardApi和taskApi。
boardApi包含3个查询 getBoardsgetBoardById,& 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 },
      }),
    }),
  }),
})
798qvoo8

798qvoo81#

一般来说,在应用程序中使用两个不同的api的情况很少--这不是其中之一。
两者甚至具有相同的基URL和应用程序逻辑--它们应该是同一API上的多个端点。
至于你的问题:你不能做自动的跨api失效。如果你想从另一个api中失效一个端点,这是一个明显的标志,表明两个端点属于同一个api。

goucqfw6

goucqfw62#

不要使用createApi两次。
使用combineReducers,您可以在所有组合reducer中使用所有声明的标记。
因此,您可以在两个任务变化中简单地使用:

invalidatesTags: ['Boards']

相关问题