Well, when we develop apps we always look at some patterns to provide scalability and maintainability. While our apps grow complex problems pop up like maintain session variables or even reactive variables, in many cases you spend a lot of time troubleshooting these state things.
Redux can easily predict the way of states behave with the state container. While the state of your whole application is stored in an object tree within a single store. The only way to mutate the state is to emit an action, an object describing what happened. And them, To specify how the state is transformed by actions, you have to write pure function reducers. This way Redux provide an easily and maintainable way to develop apps.