You still have to reduce the entire state no? I would imagine it to be something like:
struct A {
b : B
}
impl Reducer<Action> for A {}
impl Reducer<Action> for B {}
Now the reducer logic is spread out across the state.
Sure, every sub-state now need to handle Action every time but with tools like ADT and pattern matching I don't think its as bad. I feel like this will be cumbersome, but the complexity should scale linearly.