Also useEffect callback is run after the component mounts. I often use memo when kicking off async processes on component mount.
In case you trigger a native fetch, you've got no way to cancel the call due to the missing cleanup fn.
Wrong. That's just like, your opinion.
The best time to kick off external calls is during first render, not after the component is mounted and React has gotten around to calling your useEffect callback.
useMemo can be a part of the solution along with useRef and useEffect cleanup(remember it's essentially to the unmount lifecycle hook as well).
But triggering an api request having side effects is 100% incorrect.