TL; DR
useEffect(yourCallback, [])
- вызов будет вызываться только после первого рендера.
Подробное объяснение
useEffect
запускается по умолчанию после каждого рендеринга компонента (таким образом вызывая эффект).
При размещении useEffect
в вашем компоненте вы сообщаете React, что хотите запустить обратный вызов в качестве эффекта. React запустит эффект после рендеринга и после обновления DOM.
Если вы передадите только обратный вызов - обратный вызов будет выполняться после каждого рендеринга.
При передаче второго аргумента (массива) React будет запускать обратный вызов после первого рендеринга и каждый раз, когда один из элементов в массиве изменяется. например, при размещении useEffect(() => console.log('hello'), [someVar, someOtherVar])
- обратный вызов будет выполняться после первого рендеринга и после любого рендеринга, что один из someVar
или someOtherVar
будет изменен.
Передавая второй аргумент пустой массив, React будет сравнивать после каждого рендеринга массив и будет видеть, что ничего не изменилось, вызывая обратный вызов только после первого рендеринга.