Só complementando seu comentário. O propósito do usseEffect não é fazer chamadas em API. Uma chamada não é um efeito colateral. Um outro exemplo seria abrir uma modal assim que o conteúdo é carregado ou capturar dados do localStorage.

Pra fazer chamadas em API, recomendo o SWR. Ele é mantido e foi criado pela Vercel e já trás informações importantes que normalmente usando o useEffect você precisaria ficar criando estados, como isLoading, error e isValidating. Além disso ele deixa aberto para fazer a chamada com a tecnologia que quiser: Axios, fetch, etc. É interessante porque você também consegue personalizar se quer que os dados atualizem automaticamente ao retornar para a aba, o quando a internet é restabelecida.

Enfim, espero que esse comentário ajude um pouco.