getDefaultEnhancers
返回包含默认增强器列表的数组。
预期用途
默认情况下,configureStore
会自动将一些增强器添加到 Redux 商店设置中。
const store = configureStore({
reducer: rootReducer,
})
// Store has enhancers added, because the enhancer list was not customized
如果你想自定义增强器列表,可以向 configureStore
提供一个增强器函数数组。
const store = configureStore({
reducer: rootReducer,
enhancers: () => new Tuple(offline(offlineConfig)),
})
// store specifically has the offline enhancer applied
但是,当你提供 enhancer
选项时,你需要负责定义要添加到商店的所有增强器(devtools 除外)。configureStore
不会添加除了你列出的增强器之外的任何其他增强器,包括中间件增强器。
getDefaultEnhancers
在您想要添加一些自定义增强器,但同时仍然希望添加默认增强器时很有用。
import { configureStore } from '@reduxjs/toolkit'
import { offline } from '@redux-offline/redux-offline'
import offlineConfig from '@redux-offline/redux-offline/lib/defaults'
import rootReducer from './reducer'
const store = configureStore({
reducer: rootReducer,
enhancers: (getDefaultEnhancers) =>
getDefaultEnhancers().concat(offline(offlineConfig)),
})
// Store has all of the default middleware + enhancers added, _plus_ the offline enhancer
包含的默认增强器
生成的数组将始终包含基于 configureStore
的 middleware
字段创建的 applyMiddleware
增强器。
此外,还包含 autoBatchEnhancer
,以允许对低优先级操作更新进行“批处理”。这由 RTK Query 使用,并且在使用它时应该会提高性能。
目前,返回值是
const enhancers = [applyMiddleware, autoBatchEnhancer]
自定义包含的增强器
getDefaultEnhancers
接受一个选项对象,允许以两种方式自定义每个增强器(不包括中间件增强器)。
- 可以通过为其对应字段传递
false
来从结果数组中排除每个增强器。 - 可以通过为其对应字段传递匹配的选项对象来自定义每个增强器的选项。
此示例显示了自定义 autoBatch 增强器。
- TypeScript
- JavaScript
import rootReducer from './reducer'
import { configureStore } from '@reduxjs/toolkit'
const store = configureStore({
reducer: rootReducer,
enhancers: (getDefaultEnhancers) =>
getDefaultEnhancers({
autoBatch: { type: 'tick' },
}),
})
import rootReducer from './reducer'
import { configureStore } from '@reduxjs/toolkit'
const store = configureStore({
reducer: rootReducer,
enhancers: (getDefaultEnhancers) =>
getDefaultEnhancers({
autoBatch: { type: 'tick' },
}),
})
API 参考
interface AutoBatchOptions {
// see "autoBatchEnhancer" page for options
}
interface GetDefaultEnhancersOptions {
autoBatch?: boolean | AutoBatchOptions
}
function getDefaultEnhancers<M extends Middlewares<any>>(
options: GetDefaultEnhancersOptions = {},
): EnhancerArray<[StoreEnhancer<{ dispatch: ExtractDispatchExtensions<M> }>]>