Код неверный. У тебя постоянно срабатывает useEffect и соответственно увеличиваются листенеры. Потому твое "все больше и больше" происходит
но почему то они останавливаются в один момент. Проблему решил, просто прокинул функцию в setMessages и все... там скопировать массив удалось