---- useMemo vs useCallback -----------------------------------------
useMemo: memoize A CALCULATION RESULT between a function's calls
and between renders.
useCallback: memoize A CALLBACK ITSELF (referential equality)
between renders.
---------------------------------------------------------------------