Provider provides the context for hooks to work properly.
UseEffect calls the effect function on mount and on every subsequent renders, provided the dependencies given change.
UseState hooks into the context to provide some updatable state to a component.