The example you provided where you “extract the reducer from the component” is a great illustration of why (and how) redux is easier to use in smaller apps, not larger ones, contrary to the popular idea that “redux pays off only in larger apps”. Especially when your logic is mostly synchronous. Command-query segregation is a powerful idea and one place where it might be worth using is some isolated widgets with complex state. And redux, being a small library, might come in handy, although you could do without it easily.
Not meaning to say that redux is a wrong choice for the larger apps. It just needs more work. Sooner rather than later you will feel the desperate need for wrapping up boilerplate — things like “listReducer”, error payload handlers, etc. Without them you end up with code that is straightforward but verbose, and with them you end up with api that is specific to your app.
I believe there might be a need for a small and simple, but standardized library built on top of redux, which respects the flux pattern and handles all typical cases for dealing with “lists of things resources”.