Мне было интересно узнать об API React.useEffect().
React.useEffect(() => {
// do something only when `someVariable` change.
}, [someVariable]);
Или если вы хотите, чтобы он вызывался каждый раз при изменении реквизита или состояния.
React.useEffect(() => {
// do something anytime a prop/state change
});
Мой вопрос относится к более позднему подходу, каков второй аргумент по умолчанию, который получает React.useEffect, который срабатывает каждый раз, когда изменяется какое-либо свойство/состояние?





Итак, основываясь на 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 вызывается один раз при монтировании компонента.