Если вы знакомы с методами жизненного цикла класса React, вы можете подумать о том, чтобы использовать useEffect Hook как комбинированные componentDidMount, componentDidUpdate и componentWillUnmount.
1.useEffect без вторых параметров: используется, когда нам что-то нужно произойдет, когда компонент только что смонтирован, или если он был обновлен. Концептуально, мы хотим, чтобы это происходило после каждого рендеринга.
2.useEffect со вторыми параметрами как []: используется, когда мы хотим, чтобы что-то произошло во время монтирования компонента, если выполняется только один раз в Время монтирования. Это ближе к привычным компонентам DidMount и componentWillUnmount.
3.useEffect с некоторыми аргументами, передаваемыми во втором параметре: это используется, когда мы хотим, чтобы что-то произошло во время передачи программы, например. Аргументы изменились в вашем случае.
Для получения дополнительной информации. проверьте здесь: https://reactjs.org/docs/hooks-effect.html