API切片:Redux集成
在内部,createApi
会调用Redux Toolkit的createSlice
API来生成一个切片reducer和相应的action创建器,这些创建器具有缓存获取的数据的适当逻辑。它还自动生成一个自定义的Redux中间件,该中间件管理订阅计数和缓存生命周期。
生成的切片reducer和中间件都需要添加到你的Redux store设置中的configureStore
中,以便正确工作:
src/store.ts
// 文件:src/services/pokemon.ts noEmit
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'
export const pokemonApi = createApi({
baseQuery: fetchBaseQuery({ baseUrl: '/' }),
endpoints: () => ({}),
})
// 文件:src/store.ts
import { configureStore } from '@reduxjs/toolkit'
import { setupListeners } from '@reduxjs/toolkit/query'
import { pokemonApi } from './services/pokemon'
export const store = configureStore({
reducer: {
// 将生成的reducer添加为特定的顶级切片
[pokemonApi.reducerPath]: pokemonApi.reducer,
},
// 添加api中间件启用缓存,失效,轮询,
// 和`rtk-query`的其他有用特性。
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware().concat(pokemonApi.middleware),
})
// 使用提供的默认值配置监听器
setupListeners(store.dispatch)
reducerPath
reducerPath: string
包含提供给createApi
的reducerPath
选项。在将reducer
函数添加到store时,使用此作为根状态键,以便生成的API逻辑可以正确找到状态。
reducer
reducer: Reducer
一个标准的Redux切片reducer函数,包含更新缓存数据的逻辑。使用你提供的根状态键将此添加到Redux store。
middleware
middleware: Middleware
一个自定义的Redux中间件,包含管理缓存,失效,订阅,轮询等逻辑。在其他中间件之后将此添加到store设置中。