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

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

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

18 ответов

26 просмотров

Из-за замыкания. Вешай лог в 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.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта