While fetching data is indeed a side effect and useEffect is designed to handle such cases, this approach has quite weak descriptive power. It’s a generic handler, and if you look at the code of developers who tend to use useEffect, you’ll see multiple occurrences that are really hard to navigate and understand.
So, at least we can wrap the data fetching into a custom hook: