Предпочитайте useEffect(() => code... , [])
.
Тем не менее, вы также можете сделать это, избегая бесконечного l oop, но это очень плохая практика, и я не рекомендую ее.
Да, у вас будет повторный рендер, но у вас не будет бесконечного l oop. Используйте функцию отложенной инициализации useState .
const [users, getUsers] = useState(() => {
axios.get("some api call")
.then(res => getUsers(res.data))
});