Использование useEffect

Мы используем useEffect для обработки побочных эффектов. Да, и это все, что есть, и немного больше. Но прежде давайте узнаем, какие есть побочные эффекты.

Что такое побочные эффекты?

Основная задача React - визуализировать пользовательский интерфейс и реагировать на ввод пользователя. Управление состоянием, реквизитами, обработкой событий и повторным рендерингом компонентов также входит в состав Main-task.

«Побочный эффект» - это все, что происходит вне цикла оценки и рендеринга компонента.

Его пример будет включать вызовы API, использование функций таймера и т. Д.

структура useEffect

useEffect (() = ›{…}, [список зависимостей]);

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

Второй параметр - это список зависимостей, которые при изменении от предыдущего рендеринга компонента вызовут функцию обратного вызова.

Давайте посмотрим на примеры:

Мы можем использовать useEffect тремя способами:

i) без зависимостей

ii) с пустыми зависимостями

iii) с зависимостями

i) Без зависимостей

Здесь вы можете увидеть, что зависимостей нет (даже пустых зависимостей). Использование useEffect без зависимостей так же хорошо, как и не использовать его. Если бы код выборки был написан без useEffect, он работал бы точно так же.

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

ii) useEffect с пустыми зависимостями

Так в чем разница? Раньше у нас не было зависимостей, теперь у нас есть пустая зависимость. Кажется, то же самое, правда?

НЕТ, разница между ними в том, что на этот раз useEffect запустится только после первого рендеринга.

После этого, даже если мы изменим заголовок, это не повлияет, потому что список зависимостей пуст.

iii) useEffect с зависимостью

Теперь с зависимостью useEffect определенно будет запускаться при первом рендеринге, но после каждого второго повторного рендеринга он будет проверять, изменилась ли зависимость. Если да, то он запустит useEffect, в противном случае - нет.

Теперь, что вы можете добавить в качестве зависимостей

Зависимости могут быть чем угодно, что вы используете в функции useEffect и можете изменить ваш компонент. Нет необходимости добавлять функции обновления состояния (хотя их можно добавить в список зависимостей), потому что React гарантирует, что они никогда не изменятся. Также не нужно добавлять встроенный API браузера в качестве зависимости, поскольку он не зависит от нашего компонента и не изменяется.