React.useEffect () значение по умолчанию для второго аргумента - PullRequest
0 голосов
/ 09 февраля 2019

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

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

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

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

0 голосов
/ 09 февраля 2019

Таким образом, основываясь на 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 Code

...