Значение по умолчанию для второго аргумента React.useEffect()

Мне было интересно узнать об API React.useEffect().

React.useEffect(() => {
  // do something only when `someVariable` change.
}, [someVariable]);

Или если вы хотите, чтобы он вызывался каждый раз при изменении реквизита или состояния.

React.useEffect(() => {
  // do something anytime a prop/state change
});

Мой вопрос относится к более позднему подходу, каков второй аргумент по умолчанию, который получает React.useEffect, который срабатывает каждый раз, когда изменяется какое-либо свойство/состояние?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
2 649
2

Ответы 2

Итак, основываясь на https://github.com/facebook/react/blob/master/packages/react/src/ReactHooks.js#L87 из базы кода React, я вижу, что вторым аргументом по умолчанию является undefined.

React.useEffect(() => {}. undefined);

Вышеупомянутое будет обновляться каждый раз, когда изменяется реквизит/состояние, в основном все, что вызывает его повторный рендеринг.

На основании этой проверки

inputs: Array<mixed> | void | null, // which means it is either an array or undefined

Ссылка: Реагировать на код useEffect

Поскольку второго аргумента нет, это undefined, а обратный вызов useEffect запускается при каждом рендеринге:

React.useEffect(() => {
  // do something anytime a prop/state change
});

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

Другие вопросы по теме