#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. Пожалуйста, укажите дополнительную информацию в своем ответе. Как это написано в настоящее время, трудно понять ваше решение.