From c81c23fb29329e831b9a42890a3c1cd45e3e6a0a Mon Sep 17 00:00:00 2001 From: Daniel Ebert Date: Tue, 14 Apr 2020 16:09:53 +0200 Subject: [PATCH] add replaceReducer config --- src/StoreClass.ts | 2 ++ src/StoreInstance.ts | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/StoreClass.ts b/src/StoreClass.ts index 89099e7..2512428 100644 --- a/src/StoreClass.ts +++ b/src/StoreClass.ts @@ -4,6 +4,7 @@ import { StoreInterface } from './StoreInterface' import { StoreState } from './State' import { MessageHandlers } from './MessageHandler' import { DevToolsOptions } from './DevTools' +import { StoreReducer } from './Reducer' // Options passed to createStoreClass() export interface CreateStoreClassOptions { @@ -11,6 +12,7 @@ export interface CreateStoreClassOptions { messageHandlers: MessageHandlers middleware?: Middleware | Middleware[] devToolsOptions?: DevToolsOptions + replaceReducer?: (rootReducer: StoreReducer) => StoreReducer } // Defines Shape and Behaviour of a Store. diff --git a/src/StoreInstance.ts b/src/StoreInstance.ts index e1117f2..0408ce6 100644 --- a/src/StoreInstance.ts +++ b/src/StoreInstance.ts @@ -51,7 +51,10 @@ export function createStoreInstance( // The Reducer of this store needs access to the dispatch, as individual messageHandlers might want to // dispatch additional messages. - const reducer = createReducer(options, storeInstance) + let reducer = createReducer(options, storeInstance) + if (options.replaceReducer) { + reducer = options.replaceReducer(reducer) + } // Build up the chain of middlewares const executeMiddleware = createExecuteMiddleware(