File tree 1 file changed +14
-16
lines changed
1 file changed +14
-16
lines changed Original file line number Diff line number Diff line change @@ -17,23 +17,21 @@ import compose from './compose';
17
17
* @returns {Function } A store enhancer applying the middleware.
18
18
*/
19
19
export default function applyMiddleware ( ...middlewares ) {
20
- return function applyGivenMiddleware ( createStore ) {
21
- middlewares = middlewares . slice ( ) ;
22
- middlewares . reverse ( ) ;
20
+ return ( next ) => ( reducer , initialState ) => {
21
+ var store = next ( reducer , initialState ) ;
22
+ var dispatch = store . dispatch ;
23
+ var chain = [ ] ;
23
24
24
- return function createStoreWithMiddleware ( reducer , initialState ) {
25
- const store = createStore ( reducer , initialState ) ;
26
-
27
- let dispatch = store . dispatch ;
28
- let middlewareAPI = {
29
- getState : store . getState ,
30
- dispatch : ( action ) => dispatch ( action )
31
- } ;
32
- middlewares . forEach ( middleware =>
33
- dispatch = middleware ( store ) ( dispatch )
34
- ) ;
25
+ var middlewareAPI = {
26
+ getState : store . getState ,
27
+ dispatch : ( action ) => dispatch ( action )
28
+ } ;
29
+ chain = middlewares . map ( middleware => middleware ( middlewareAPI ) ) ;
30
+ dispatch = compose ( ...chain , store . dispatch ) ;
35
31
36
- return Object . assign ( { } , store , { dispatch } ) ;
32
+ return {
33
+ ...store ,
34
+ dispatch
37
35
} ;
38
- }
36
+ } ;
39
37
}
You can’t perform that action at this time.
0 commit comments