Я экспериментировал с приведенным ниже фрагментом кода, чтобы понять поведение хуков React useState
и useEffect
.
const [foo, setFoo] = React.useState<boolean>(true);
React.useEffect(() => {
console.log("Setting state foo to false ...");
setFoo(false);
}, [foo]);
В текущей реализации эффект должен запускаться при mount
, изменении зависимости и unmount
. поскольку foo
все время устанавливается на одно и то же логическое значение false
, я ожидал, что компонент хостинга должен отображаться только 2 раза, т.е. при начальной загрузке и когда состояние foo
изменяется с true
на false
.
Но на самом деле я заметил, что этим кодом создается бесконечный повторный рендеринг l oop.
Переполнение стека - 57850595 опубликовал аналогичный случай, исследующий, почему то же состояние вызвало повторный рендеринг, который направил меня на выход из обновления состояния механизм Реагировать. В нем говорится: «React, возможно, все еще потребуется отрендерить этот специфицированный c компонент перед выходом». Разве это не должно означать, что для опубликованного фрагмента кода будет не более трех раз отрисовки?