Интервал отмены при достижении заданного значения - PullRequest
0 голосов
/ 08 мая 2019

Куда мне положить clearInterval, когда progressState больше 99 в моем приложении?

  const [progressState, setProgress] = useState(0);

  useEffect(() => {
    const interval = setInterval(() => { setProgress(progressState => progressState + 1);}, 1000);
  }, []); // this is only called once because of [], now i can't check for clearing

Я сбит с толку из-за функционального программирования, даже добавление 1 + 1 становится кошмаром.

Нужно ли использовать другой метод useEffect для очистки интервала?

Я сделал это сейчас


  const [progressState, setProgress] = useState(0);

  useEffect(() => {
    const interval = setInterval(() => {
      setProgress(progressState => {
        progressState == 100 && clearInterval(interval)
        return progressState + 1;
      });
    }, 100);
  }, []);

1 Ответ

0 голосов
/ 08 мая 2019

В функции обработчика.

const interval = setInterval(() => {
  setProgress(progressState => progressState + 1);
  if (progressState >= 99) {
    clearInterval(interval);
  }
}, 1000);
...