и вот повесив зависимость от стейта и использовав реф напрямую ненадо будет иметь ещё один реф для проверки изменения нашего рефа и эффект будет тригериться только тогда, когда надо.
реф будет присвоен после выполнения тела компонента, но перед эффектом.
const useNNN = (ref) => {
useEffect(() => {
// реф поменялся, что-то делаем
}, [ref.current]);
}
const MyComp = (props) => {
const ref = useRef(null);
useNNN(ref);
return (
...
{props.someCondition && <div ref={ref} />}
...
);
};
Надо порисовать на бумаге кучу случаев и аккуратно их разобрать.