Можно не избегать, но на хуках оно более чисто и современно получается) единственное, чего не хватает в хуках, это аналог componentDidUpdate, для ситуаций, когда вам необходимо выполнить код всегда, но только не во время монтирования компонента. Это можно обойти через useRef.
const isMountRef = useRef(false);
useEffect(() => {
if (isMountRef.current) {
// some code
}
}, [someDependencies]);
useEffect(() => {
// Using for useEffect on didUpdate (not mount)
isMountRef.current = true;
}, []);