Joel.Watson92@gmail.com | LinkedIn: /in/joel3rbear | Twitter: @Joel3rBear
One reason to wrap your entire state in a context is because then all your descendant components will have access to those state variables.
The purpose of a reducer is to take the current state and an action, and update the state with the given action.
An action contains two things, the action type telling it which action to do, and the action payload, which is the data to use for the action.
Reducers need a copy of state so they can update it with the action or return the state if no actions need to be taken.