This app uses custom hooks for two purposes:
cities
changes. This effect ensures
that the invariant selCities
⊆ cities
remains true.
doLog
is specified, then
all mounts, unmounts and renders on all components are logged
to the console using a effect encapsulated within a custom
hook useLog()
.