новое время, и если в этом же компоненте прописать console.log то он начинает увеличится как на скрине, в чем проблема? или так нельзя устанавливать setInterval?
код
вставлял console.log на 6 строку
Тебя смущает что консоль лог 7к раз вызвался?
+ оперативка с временем тоже нагружается из-за этого
Да, правильно, так и будет. Начнём с того, что когда ты меняешь стейт -> происходит ререндер компонента, со всеми вытекающими последствиями.
как правильно это можно сделать?
задача на hook useState
Ну, во-первых, добавь интервалу хотя бы задержку в 1000мс, потому что сейчас у тебя вообще нет задержки. Во-вторых, желательно что бы setInterval находился в useEffect, там же в return-е ты должен ещё и clearInterval делать. Но, если это урок по useState, предполагаю, что вы ещё не проходили это. Из-за чего хотя бы первого пункта должно тебе хватить, что бы память не сжирало лавиной. В интернете должны быть примеры таймеров / часов и т.д.
вот так сделал, правильно?
Не совсем, clearInterval в таком случае, по идеи, запустит твой интервал лишь единожды, убери его.
Неа, он перерендерит компонент и создаст новый, и получится 2 интервала и так в геометрической прогрессии страничка умрёт 👍
Интересно, но разве реакт не должен дождаться, пока выполнится интервал, перед изменением стейта и ререндером? А интервал сам себя удаляет. Тут без песка не разобраться)
сетСтейт же не сразу ререндер запускает
Парень setState только учит, вероятно useEffect они не проходили ещё.
А что это меняет? У нас будут плодиться асинхрорщина из-за чего будет плодиться seState вызовы -> соответственно перерендер
сейчас работает, таймер тикает
то есть это не сделать чисто на setState?
вроде щас норм, и console.log печатается каждую секунду
Вы useEffect уже проходили на уроках?
нет, задача должна решится чисто на useState условие
Обсуждают сегодня