false )
На компоненте при его инициализации вешается событие 'scroll'. После при достижении нужной высоты от начала экрана, я обновляю этот стейт на setScroll( true ). Но если повесить консоль.лог на этот обработчик события 'scroll', то мне всё равно выдает старый не измененный стейт. Не могу понять почему так происходит? Т.е я обновляю стейт в событии скролла, но он как-бы все равно не обновляется
Из-за замыкания. Вешай лог в useEffect
Вот так я делаю
Так оно как работает, каждый пиксель прокрутки в событии scroll новый рендер? Просто я же в этом событии меняю стейт, но оно каждую прокрутку выбивает сначала старый, а потом может обновляется как-то
Обработчик получает координаты? На что ты повесил слушатель?
Мне нужно чтобы когда допустим прокрутил 50 пикселей от начала страницы, то добавлять классы в dom элементам, допусти _active повесить чтобы поменять позиционирование. Оно вроде всё работает правильно, я только не могу понять, почему когда я отслеживаю скролл в функции переданной в addEventListener, то у меня вечно выдает не обновленный стейт, хотя я же его в этой функции уже и объявил, и оно работает правильно.
Ещё раз. У тебя scroll буквально объявлен как const. Каким образом он должен меняться по твоему?
Я там поменял на let, разницы нет
Разницы нет. Но и логики тоже нет. Стейт внутри рендера это константа. Он не меняется
Она там не оригинальная, я еще допиливал цвета, ибо оно мало отображало и почти всё красное было
ты как addEvent добавляешь
У тебя scroll в замыкании
u can try use ++monokay
Т.е функция объявлена при отрисовке компонента, и она видит замкнутое значение стейта в false, и дальше при скролле оно каждый раз меняет на true, но сразу при следующем всё равно видит false и меняет так каждый раз на true?
ты один раз подписался на скролл
Чувак, просто скинь скрин логики компонента
Space Ocean Kit Refined
This is his own theme.
Обсуждают сегодня