Реагируйте JS: Запускайте функцию с помощью setInterval (), чтобы она выполнялась каждую секунду

#reactjs #triggers #setinterval

Вопрос:

Я пытаюсь понять, как работает эта функция setInterval() и как использовать ее для запуска функции для выполнения каждую секунду. В качестве примера я пытаюсь генерировать новое случайное число каждую секунду. т. Е. функция getNewNr должна выполняться каждую секунду. (Позже это может быть более сложная функция…)

Вот что у меня есть:

 import React, { useState, useEffect } from 'react'

function Random() {

    const [number, setNumber] = useState(0)

    const getNewNr = () => {
        setNumber(Math.floor(Math.random() * 100))
    }
    useEffect(() => {
        const interval = setInterval(() => getNewNr, 1000)
        return () => clearInterval(interval)
    }, [])

    return (
        <div>
            {number}
        </div>
    )
}

export default Random
 

Но число остается на 0 и не меняется. Может ли кто-нибудь заметить ошибку?

Комментарии:

1. Вам нужно вызвать getNewNr функцию, setInterval(() => getNewNr(), 1000) либо как переданную ссылку setInterval(getNewNr, 1000) . Голосование за закрытие как «Не воспроизводимое или было вызвано опечаткой». Ваше здоровье.

Ответ №1:

 import React, { useState, useEffect } from "react";

function Random() {
  const [number, setNumber] = useState(0);

  const getNewNr = () => {
    setNumber(Math.floor(Math.random() * 100));
  };
  useEffect(() => {
    const interval = setInterval(() => getNewNr(), 1000);
    return () => clearInterval(interval);
  }, []);

  return <div>{number}</div>;
}

export default Random;
 

Комментарии:

1. Пожалуйста, укажите дополнительную информацию в своем ответе. Как это написано в настоящее время, трудно понять ваше решение.