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
オプションを渡す場合は、ストアに追加する _すべて_ のエンハンサーを定義する必要があります(開発ツールを除く)。 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
は、各エンハンサー(ミドルウェアエンハンサーを除く)を 2 つの方法でカスタマイズできるオプションオブジェクトを受け入れます。
- 各エンハンサーは、対応するフィールドに
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> }>]>