メインコンテンツにスキップ

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

含まれるデフォルトのエンハンサー

結果の配列には、常に configureStoremiddleware フィールドに基づいて作成された applyMiddleware エンハンサーが含まれます。

さらに、優先度の低いアクションの更新を「バッチ処理」できるように、autoBatchEnhancer が含まれています。これは RTK Query で使用され、使用時のパフォーマンスを向上させるはずです。

現在、戻り値は次のとおりです。

const enhancers = [applyMiddleware, autoBatchEnhancer]

含まれるエンハンサーのカスタマイズ

getDefaultEnhancers は、各エンハンサー(ミドルウェアエンハンサーを除く)を 2 つの方法でカスタマイズできるオプションオブジェクトを受け入れます。

  • 各エンハンサーは、対応するフィールドに false を渡すことで、結果の配列から除外できます。
  • 各エンハンサーは、対応するフィールドに一致するオプションオブジェクトを渡すことで、オプションをカスタマイズできます。

この例は、autoBatch エンハンサーのカスタマイズを示しています。

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> }>]>