- Represent the whole state of app as a single JS object
- All changes and mutations to state are explicit
- State or state tree: everything that changes in your app is contained in this object
- Dispatch an action: change the state
- Rec: use strings because they are "surorizable" (serializable?)
- The only way to change a state tree is to dispatch an action
- return value depends soley on value of args
- does not overwrite args
- returns a new object
- Might have side effects
- Operate on the DOM
- Overwrite given args
NB: Why important? Some of the functions you write have to be pure.
Big Idea: UI/View layer most predictable when described as a pure function of the application's state
- State mutations in app needs to be describe as a pure function
- Takes