Поскольку добавление обработчика событий не меняет то, что отображается на экране, я бы рекомендовал добавить его в ваш useEffect()
вместо useLayoutEffect()
. Вы уже передаете пустой массив в качестве списка зависимостей для useEffect, что гарантирует, что обработчик событий будет добавлен только один раз.
useEffect(() => {
document.addEventListener('DOMContentLoaded', (event) => {
document.addEventListener('scroll', listener, true);
});
return () => {
document.removeEventListener('scroll', listener, true);
console.log('unmount');
};
}, []);