Ваши очки в основном верны, некоторые незначительные уточнения:
useState вызывает повторную визуализацию при вызове метода setState (возвращается второй элемент в массиве). Он не имеет никаких зависимостей, таких как useMemo или useEffect.
useMemo пересчитывает значение только в том случае, если изменяются элементы в его массиве зависимостей (если нет зависимостей - т. Е. Массив пуст, он будет пересчитываться при каждом вызове / рендеринге). Вызов функции не вызывает повторного рендеринга. Также он запускает во время рендеринга компонента, а не раньше.
useEffect вызывается после каждого рендеринга, если элементы в его массиве зависимостей изменились (или каждый раз, когда массив опущен или пуст).
Вы всегда можете проверить https://reactjs.org/docs/hooks-reference.html,, что, на мой взгляд, довольно солидная документация