Skip to content

Commit e70b24d

Browse files
committed
Merge pull request #92 from gaearon/fix-stale-getState
Fix stale state inside action creators on hot reload
2 parents 5073538 + 4acf88a commit e70b24d

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/createDispatcher.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ export default function createDispatcher(store, middlewares = []) {
1313
return state;
1414
}
1515

16-
if (typeof middlewares === 'function') {
17-
middlewares = middlewares(getState);
18-
}
16+
const finalMiddlewares = typeof middlewares === 'function' ?
17+
middlewares(getState) :
18+
middlewares;
1919

20-
return composeMiddleware(...middlewares, dispatch);
20+
return composeMiddleware(...finalMiddlewares, dispatch);
2121
};
2222
}

test/createRedux.spec.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,20 @@ describe('createRedux', () => {
5353
]);
5454
expect(changeListenerSpy.calls.length).toBe(1);
5555
});
56+
57+
it('should use existing state when replacing the dispatcher', () => {
58+
redux.dispatch(addTodo('Hello'));
59+
60+
let nextRedux = createRedux({ todoStore });
61+
redux.replaceDispatcher(nextRedux.getDispatcher());
62+
63+
let state;
64+
let action = (_, getState) => {
65+
state = getState().todoStore;
66+
};
67+
68+
redux.dispatch(action);
69+
70+
expect(state).toEqual(redux.getState().todoStore);
71+
});
5672
});

0 commit comments

Comments
 (0)