Closed
Description
We should throw if you attempt to dispatch while the reducer is being called.
Note that this will not cause the dreaded Cannot dispatch in a middle of dispatch
if you dispatch
from component's componentDidMount
or componentWillReceiveProps
. Unlike Flux, we don't have this problem, because we call all subscribers after the reducer is called.
This means we can set a flag immediately before currentState = reducer(currentState, action)
in createStore
and reset it on the next line, so everything happens before the subscribers are called. The subscribers should be able to call dispatch
just fine.
I'd very much like to see this as a PR as I don't have much time. It needs to:
- Introduce the error if you dispatch while the reducer is evaluating.
- Include a test for this.
- Should not fail the existing “should handle nested dispatches gracefully” test
Please build it on top of breaking-changes-1.0
branch.