Что нельзя сделать без useEffect hook?

#reactjs #use-effect

#reactjs #use-effect

Вопрос:

Я прочитал документы useEffect и понимаю, как это упрощает жизнь, чем методы жизненного цикла. И все же мне интересно, без чего это было бы невозможно useEffect ?

Например, вместо (весь код является фиктивным кодом)

 useEffect(networkRequest.then(update state));
 

разве я не мог просто использовать

 // inside functional component
function App() {
  networkRequest.then(update state)
}
 

Комментарии:

1. couldn't I just use Нет, вы не могли, потому что, как только вы установите состояние, функция будет вызвана снова, начнется новый сетевой запрос, состояние будет установлено, и цикл повторяется.

Ответ №1:

Что вы имеете в виду под «упрощает жизнь, чем методы жизненного цикла»? Реагирующие хуки — это то, как вы используете жизненный цикл компонента в функциональных компонентах.

Точно так же, как метод render жизненного цикла компонентов на основе классов должен быть чистой функцией без побочных эффектов, так и to — это все тело функционального компонента. Тело функционального компонента — это функция «render».

 // inside functional component
function App() {
  networkRequest.then(update state)
}
 

В приведенном выше, как написано, нет защиты, защищающей побочный эффект сетевого запроса или обновления состояния… он просто обновит состояние и повторный запуск, а также обновит состояние и повторный запуск, … до тошноты, или, другими словами, бесконечный цикл рендеринга.

Реагирующие хуки — это то, что позволяет вам использовать жизненный цикл компонента в функциональных компонентах.

Чтобы прямо ответить на ваш вопрос, хотя:

И все же мне интересно, что было бы невозможно без useEffect?

Было бы невозможно вызвать побочные эффекты, такие как любые асинхронные сетевые запросы, аутентификация и т.д… Было бы невозможно вызвать какой-либо конкретный компонент при монтировании или повторном запуске. Было бы невозможно запустить какую-либо конкретную логику при обновлении определенного значения состояния / реквизита.