reactant-module
Version:
A module model for Reactant
40 lines (36 loc) • 770 B
text/typescript
import {
applyMiddleware as applyMiddlewareWithRedux,
Middleware,
Store,
} from 'redux';
import { PluginModule } from './plugin';
import { storeKey } from '../constants';
/**
* ## Description
* Apply middlewares for Redux.
*
* ## Example
*
* ```ts
* import logger from 'redux-logger';
*
* @injectable()
* class Foo {}
*
* const app = createApp({
* modules: [applyMiddleware(logger)],
* main: Foo,
* render: () => {},
* });
* ```
*
* @param args middlewares for Redux
*/
const applyMiddleware = (...args: Middleware[]) => {
return class extends PluginModule {
readonly [storeKey]?: Store;
// eslint-disable-next-line prefer-spread
enhancer = applyMiddlewareWithRedux.apply(null, args);
};
};
export { applyMiddleware };