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