Nie ma do tego specjalnego hooka. Możesz doinstalować paczkę, która daje bardziej intuicyjne hooki. Możesz też po prostu sprawdzić, czy efekt został już raz uruchomiony i jeśli nie, to po prostu robisz return. Ja używam takiego helpera:
import { DependencyList, EffectCallback, useEffect, useRef } from 'react'
function useDidChanged(effect: EffectCallback, deps?: DependencyList) {
const isMounted = useRef(false)
useEffect(() => {
if (!isMounted.current) {
isMounted.current = true
return
}
effect()
}, deps)
}