Nicely explained Mikhail. I like the way you boiled down the concepts. It makes it very easy to understand.
If I were to add something, it would be to define the concept of “store”. You are right in that it is specific to Redux, and there is no equivalent in the MVC architecture. The store is like a container for the state by aggregating all the reducers. It has a method to the get the current state, and exposes ways to subscribe to the state changes (which is probably what the “connect()” function uses to update the props for the component). It receives all the actions that are dispatched, and passes it on to all the reducers which in turn update the state. It also holds a list of middleware functions, allowing custom logic to be added in the dispatch flow. Middleware functions are used for things like handling async data fetching, logging etc.
Thanks for the wonderful article and keep up the good work.