169 похожих чатов

Добрый день. Есть допустим стейт: const [scroll, setScroll] = useState (

false )
На компоненте при его инициализации вешается событие 'scroll'. После при достижении нужной высоты от начала экрана, я обновляю этот стейт на setScroll( true ). Но если повесить консоль.лог на этот обработчик события 'scroll', то мне всё равно выдает старый не измененный стейт. Не могу понять почему так происходит? Т.е я обновляю стейт в событии скролла, но он как-бы все равно не обновляется

18 ответов

10 просмотров

Из-за замыкания. Вешай лог в useEffect

Стас- Автор вопроса
Мороз Аксёнова
Из-за замыкания. Вешай лог в useEffect

Так оно как работает, каждый пиксель прокрутки в событии scroll новый рендер? Просто я же в этом событии меняю стейт, но оно каждую прокрутку выбивает сначала старый, а потом может обновляется как-то

Обработчик получает координаты? На что ты повесил слушатель?

Стас- Автор вопроса
Максим Исаев
Обработчик получает координаты? На что ты повесил ...

Мне нужно чтобы когда допустим прокрутил 50 пикселей от начала страницы, то добавлять классы в dom элементам, допусти _active повесить чтобы поменять позиционирование. Оно вроде всё работает правильно, я только не могу понять, почему когда я отслеживаю скролл в функции переданной в addEventListener, то у меня вечно выдает не обновленный стейт, хотя я же его в этой функции уже и объявил, и оно работает правильно.

Стас
Мне нужно чтобы когда допустим прокрутил 50 пиксел...

Ещё раз. У тебя scroll буквально объявлен как const. Каким образом он должен меняться по твоему?

Стас- Автор вопроса
Стас
Я там поменял на let, разницы нет

Разницы нет. Но и логики тоже нет. Стейт внутри рендера это константа. Он не меняется

Стас- Автор вопроса

Она там не оригинальная, я еще допиливал цвета, ибо оно мало отображало и почти всё красное было

У тебя scroll в замыкании

u can try use ++monokay

Стас- Автор вопроса
Vasiliy
У тебя scroll в замыкании

Т.е функция объявлена при отрисовке компонента, и она видит замкнутое значение стейта в false, и дальше при скролле оно каждый раз меняет на true, но сразу при следующем всё равно видит false и меняет так каждый раз на true?

Стас
Т.е функция объявлена при отрисовке компонента, и ...

Чувак, просто скинь скрин логики компонента

Стас- Автор вопроса

Space Ocean Kit Refined

This is his own theme.

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
А вот посоветуйте что-нибудь почитать на тему проектирования систем на Хаскеле? Теории по самому языку и смежным теориям - масса, но как из всех этих теорий построить архитект...
Jevgeni Goloborodko
7
значить например он учился в СДУ то получается он особенный?)
Asets Serikov
11
А кто такой мужчина в твоем понимании Азиз?
who?です 🐈
11
Карта сайта