Использование useEffect абсолютно необходимо? - PullRequest
0 голосов
/ 25 октября 2019

Я использую React Hooks в течение нескольких месяцев и строго придерживаюсь использования useEffect согласно документации.

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

Вот простой пример использования: нажата кнопка для извлечения некоторых данных. Клик обрабатывается обработчиком события Click. Он задается вопросом, почему он не может сделать асинхронный вызов к конечной точке непосредственно в обработчике событий.

Я ищу объяснение, которое выходит за рамки «документы говорят, что вы не должны» и фактически объясняет, чтоопасность или обратная сторона этого -

Может ли кто-нибудь рассказать, почему?

1 Ответ

1 голос
/ 25 октября 2019

Короче говоря, он используется для любых побочных эффектов (не только для извлечения данных):

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

  • Изменение любой внешней переменной или свойства объекта (например, глобальной переменной или переменной в цепочке областей родительской функции)
  • Запись в консоль
  • Запись на экран
  • Запись в файл
  • Запись в сеть
  • Запуск любого внешнего процесса
  • Вызов любых других функций с побочнымЭффекты

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

...