Thank you for highlighting this amazing feature!
This is actually the reason why you don’t need Redux in tons of mid-sized projects. I know, it’s not exactly the same, but with functional setState, you can achieve most benefits of Redux such as separation of concerns and testability by exporting state mutations into separate pure functions.
You can easily build a bit of architecture over this feature like using factories to make functions that finally go to setState.
Again, it’s not the same, though.