首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RTK查询中实现configureStore多中间件

如何在RTK查询中实现configureStore多中间件
EN

Stack Overflow用户
提问于 2022-05-30 13:03:40
回答 2查看 1.9K关注 0票数 1

redux-给出原始文档的工具包--

代码语言:javascript
复制
import { configureStore } from '@reduxjs/toolkit'
// Or from '@reduxjs/toolkit/query/react'
import { setupListeners } from '@reduxjs/toolkit/query'
import { pokemonApi } from './services/pokemon'

export const store = configureStore({
  reducer: {
    // Add the generated reducer as a specific top-level slice
    [pokemonApi.reducerPath]: pokemonApi.reducer,
  },
  // Adding the api middleware enables caching, invalidation, polling,
  // and other useful features of `rtk-query`.
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware().concat(pokemonApi.middleware),
})

// optional, but required for refetchOnFocus/refetchOnReconnect behaviors
// see `setupListeners` docs - takes an optional callback as the 2nd arg for customization
setupListeners(store.dispatch)

我的代码

代码语言:javascript
复制
import { configureStore } from '@reduxjs/toolkit'
import newletterReducer from '../slicers/newletter/newsletterSlicer'
import { setupListeners } from '@reduxjs/toolkit/query'
import { getmoviesdetails } from '../slicers/service/getmoviedetails'
import { authService } from '../slicers/service/auth/authService'

export const store = configureStore({
    reducer: {
        newsletter: newletterReducer,
        [getmoviesdetails.reducerPath]: getmoviesdetails.reducer,
        [authService.reducerPath]: authService.reducer,
    },
    middleware:
        (getdefaultMiddleware) =>
            {return getdefaultMiddleware().concat(getmoviesdetails.middleware)
                ,getdefaultMiddleware().concat(authService.middleware)}
                     
            

})

setupListeners(store.dispatch)

他们给出了错误buildInitiate.ts:248警告:中间件的RTK-查询API在reducerPath上"getmoviedetails“尚未添加到商店中。诸如自动缓存收集、自动重取等功能将不可用。

EN

回答 2

Stack Overflow用户

发布于 2022-06-16 09:37:38

你可以这样做:

代码语言:javascript
复制
middleware:
        (getdefaultMiddleware) =>
            getdefaultMiddleware()
            .concat([
                     getmoviesdetails.middleware, 
                     authService.middleware
                   ])

基本上,您可以在一个数组中传递所有中间件。

票数 5
EN

Stack Overflow用户

发布于 2022-05-30 13:17:55

代码语言:javascript
复制
getdefaultMiddleware().concat(getmoviesdetails.middleware).concat(authService.middleware)

但是您实际上应该只有一个api,除非这些api是完全独立的api,永远不会有任何重叠的数据。

引用文档的话:

通常情况下,应用程序需要与之通信的每个基本URL只有一个API切片。例如,如果您的站点同时从/ API / post和/api/user获取数据,那么您将有一个以/api/作为基本URL的api切片,以及针对posts和用户的独立端点定义。这允许您通过定义跨端点的标记关系来有效地利用自动重取。出于可维护性的目的,您可能希望将端点定义拆分到多个文件中,同时仍然维护一个包含所有这些端点的API切片。有关如何使用injectEndpoints属性将API端点从其他文件注入到单个API片定义.

,请参见代码拆分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72434804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档