Скорее всего, это из-за того, что res.someThing
"ложно". Не увидев ответа, будет сложно выполнить отладку.
Похоже, вы пытаетесь провести своего рода опрос. Лучшим способом сделать это было бы очистить интервал с помощью функции очистки. Пример:
function Home() {
const intervalId = useRef(0);
const [value, setValue] = useState(null);
useEffect(() => {
// Clean the interval no matter what
clearInterval(intervalId.current);
// Conditionally set interval
if (value === null) {
intervalId.current = setInterval(fetchData, 1000);
}
// Clean up
return () => clearInterval(intervalId.current);
}, [value]);
async function fetchData() {
const response = await fetch("");
const res = await response.json();
setValue(res.someThing);
}
return null; // Render UI
}
Эта функция делает то, что вы хотите, очищая интервал, когда установлено значение из функции выборки. Он очистит интервал и установит другой интервал, только если значение будет таким, как вы хотите.