Компонент React перерисовывает бесконечно с тем же состоянием логического значения, которое установлено в хуке useEffect? - PullRequest
0 голосов
/ 27 мая 2020

Я экспериментировал с приведенным ниже фрагментом кода, чтобы понять поведение хуков 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 компонент перед выходом». Разве это не должно означать, что для опубликованного фрагмента кода будет не более трех раз отрисовки?

1 Ответ

1 голос
/ 27 мая 2020

Как указал Бен в первом комментарии, фрагмент кода действительно работает так, как ожидалось. Это была моя ошибка, в результате которой был задан вопрос, содержащий ложноотрицательный результат.

...