您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

MiddlewareRegistry.ts 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { Middleware, applyMiddleware } from 'redux';
  2. import { IReduxState, IStore } from '../../app/types';
  3. /**
  4. * A registry for Redux middleware, allowing features to register their
  5. * middleware without needing to create additional inter-feature dependencies.
  6. */
  7. class MiddlewareRegistry {
  8. _elements: Array<Middleware<any, any>>;
  9. /**
  10. * Creates a MiddlewareRegistry instance.
  11. */
  12. constructor() {
  13. /**
  14. * The set of registered middleware.
  15. *
  16. * @private
  17. * @type {Middleware[]}
  18. */
  19. this._elements = [];
  20. }
  21. /**
  22. * Applies all registered middleware into a store enhancer.
  23. * (@link http://redux.js.org/docs/api/applyMiddleware.html).
  24. *
  25. * @param {Middleware[]} additional - Any additional middleware that need to
  26. * be included (such as middleware from third-party modules).
  27. * @returns {Middleware}
  28. */
  29. applyMiddleware(...additional: Array<Middleware<any, any>>) {
  30. return applyMiddleware(...this._elements, ...additional);
  31. }
  32. /**
  33. * Adds a middleware to the registry.
  34. *
  35. * The method is to be invoked only before {@link #applyMiddleware()}.
  36. *
  37. * @param {Middleware} middleware - A Redux middleware.
  38. * @returns {void}
  39. */
  40. register(middleware: Middleware<any, IReduxState, IStore['dispatch']>) {
  41. this._elements.push(middleware);
  42. }
  43. }
  44. /**
  45. * The public singleton instance of the MiddlewareRegistry class.
  46. */
  47. export default new MiddlewareRegistry();