Principle 1 – Redux has a single source of truth – and object that contains all of your applications state.
This single source of truth is a state tree that is simply an object containing functions (methods) and other data.
Principle 2 – Redux state is read-only and cannot be mutated.
The only way to mutate the state is to emit an action. An action is an object describing what happened.
Principle 3 – Redux mutations are written as pure functions
A reducer is a pure function you write to implement the update logic of your app, that is how the next state is calculated given the current state and the action being dispatched.