В useEffect какая разница между предоставлением массива зависимостей или пустого массива? - PullRequest
0 голосов
/ 27 октября 2019

Я понимаю, что хук useEffect запускается после каждого рендера, если он снабжен пустым массивом зависимостей:

useEffect(() => {
  performSideEffect();
}, []);

Но в чем разница между этим и следующим?

useEffect(() => {
  performSideEffect();
});

Обратите внимание на отсутствие [] в конце. Плагин линтера не выдает предупреждение.

1 Ответ

2 голосов
/ 27 октября 2019

Это не совсем то же самое.

  • Предоставление ему пустого массива действует как componentDidMount как в, он запускается только один раз.

  • При отсутствии второго аргумента действует как обаcomponentDidMount и componentDidUpdate, так как он запускается сначала при монтировании, а затем при каждом повторном рендеринге.

  • Предоставление ему массива в качестве второго аргумента с любым значением внутри, например , [variable1] будет выполнять код только внутри вашей useEffect ловушки ONCE при монтировании, а также всякий раз, когда эта конкретная переменная (variable1) изменяется.

Также вы можете прочитать больше о втором аргументеподробнее о том, как на самом деле работают хуки в официальных документах на https://reactjs.org/docs/hooks-effect.html

...