Redux is based on this main concepts:
A. A single "source of truth":
B. The status is read-only:
Example of an Action ⬇
C. Changes with pure functions:
Since we cannot modify the state directly (just through actions) and the state is stored in a single Store, to specify how to make changes in the state tree we use pure functions called reducers "(a pure function is simply a function that returns the same result to the same input data)". The reducer is just that, a function that receives two parameters, the initial state, and an action. Depending on the type of action it will perform one operation or another on the state. Always immutable, WE CANNOT MODIFY THE STATE, if not create a copy from the previous one. This makes it easier to track down possible errors.
Redux is much more than this, but these are its basic principles. The sooner you understand how your actions and reducers work the closer you will be to being able to use such a powerful library as Redux. What Redux does in my own words is to create a maintainable application with a great architecture. You can choose to don't use it but the architecture of the application you are making will not be maintainable and if it grows it will be more difficult to make changes. That is why Redux dictates the guidelines for a good architecture, because it helps to do things right from the start.
Thank you for reading! 😃