Store: contains the state. Holds all the redux.
Reducer (updater): how the action changes the state. Switch on the action.type
Dispatch: holds the actino and the state.
Action: triggers a dispatch (method) contains the data (payload). 2 things(type, payload)
Subscribe: allows you to listen to an action(change) then trigger its subscribers. triggered when the state is update.
Middleware:provides a third-party extension point between dispatching an action, and the moment it reaches the reducer.
Middleware allows us to do things like logging and makes API requests in our action creators. Without middleware, Redux store only supports synchronous data flow.