У меня есть функциональный компонент, который имеет два состояния:
let [data, setData] = useState([]);
let [loading, setLoading] = useState(false);
У меня также есть простой хук useEffect, который вызывает функцию, которая возвращает обещание:
useEffect(() => {
someFunctionThatReturnsAPromise().then({
console.log("Before setData");
setData(dataFromFetch);
console.log("After setData");
console.log("Before setLoading");
setLoading(true);
console.log("After setLoading");
}
);
},[]);
return (
<div>
console.log("Hey i rendered");
</div>
);
Просмотртак как у меня есть пустой массив зависимостей ([] внутри useEffect), этот useEffect будет запущен только один раз. Мой вопрос:
Видя, как setData вызывает повторный рендеринг компонента, не должно ли, как только код достигнет setData(dataFromFetch);
, разве не должно остановиться выполнение? В моем журнале консоли выводится следующее:
Hey i rendered
Before setData
Hey i rendered
After setData
Before setLoading
Hey i rendered
After setLoading
Я ожидал что-то вроде:
Hey i rendered
Before setData
Hey i rendered
Почему выполнение продолжается даже после повторного рендеринга компонента? Куда я могу пойти, чтобы прочитать что-то подобное?