What is Redux?
Redux is a software that manages state in a centralized way.
Think a little bit how state is managed in React. Every component is subscribed to it's own local state. But what if we want to pass some values from one's component state to another component?
We would do that through props as we saw in React core module. What if we want to continue passing these values on level more down? Then we would do it again with props and again.
That means, even before we start composing our components, we need to take care about the hierarchy and which component is going to be at the top of the pyramid, and which are going to go to bottom levels. Furthermore, if a change of state occurs in one component at the bottom levels, there is no way that this info will travel directly to it's siblings components, without first passing from the top of the pyramid or a common parent component at least. This can be very difficult to maintain or to structure beforehand.
This is where redux comes to the rescue! Redux offers a centralized (or global) place where the state of the whole application will be stored. Then all the components can have direct access to this state without intermediate components to interfere. Exactly like the second schema on the right side above depicts.
When a change in one component occurs, this updates the central state, and automatically all the components who subscribe to this central state get updated.
Let's see how Redux works from inside though.