@pinkhead_psd

Как работает таймер — setInterval в жизненном цикле React приложения?

Приветствую, возник вопрос во время работы с таймером. Суть задачи состоит в том, что требуется подгружать данные с сервера и затем их отрисовать по таймеру. Пример как это должно работать, есть state pageLoad, который по умолчанию false. По запуску таймера, состояние меняется на true, useEffect считывает изменения и если значение true запускает функцию. Она в свою очередь, производит запросы и какие-то вычисления и меняет значение на false. Но после изменения useEffect видит все равно true и запускает еще раз это функцию
сonst [pageLoad, setPageLoad] = useState(false)

  useEffect(() => {
    if(pageLoad === true){
      test()
    }
  }, [pageLoad]);  

  const timer = setInterval(() => {
    setPageLoad(true)
    console.log(`поставил значение TRUE`);
  }, 10000)

  function test(){
    console.log(pageLoad);
    setPageLoad(false)
  }

Результат кода должен раз в 20 сек выводить значение true. Но вместо этого происходит первая отработка и выводится значение 1, а потом уже как раз срабатывает два раза функция и выводит сразу 2 значения
6377948a0e8b5425244499.png
  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы