Короче, я чет не догоняю, при первом вызове useEffect добавляется событие, а во второй раз тоже добавляется, но вернувшаяся функция в при первом вызове useEffect куда попадает?
Насколько я понял, useEffect добавляет обработчик события, потом возвращает функцию, которая удаляет обработчик, но удалится он при следующем вызове useEffect, но добавится еще 1, прежде чем он удалится. Как я и думал изначально, вот только не понял, где он хранит вернувшуюся функцию, видимо как то запоминает, и потом впихивает его в основную функцию при вызове useEffect.