вам не нужно устанавливать состояние монтирования, потому что useEffect будет работать автоматически, когда компонент монтируется, и если вы хотите, чтобы он работал только один, вы добавляете пустой массив [] в качестве второго аргумента
и вы должны заключить ваш запрос Ax ios внутри useEffect в асинхронную c функцию, подобную этой:
import React, { useState, useEffect } from "react";
import axios from "axios";
const NewsHook = ()=> {
const [news, setNews] = useState([]);
useEffect(() => {
const getNews = async () => {
const result = await axios.get('https://hn.algolia.com/api/v1/search?query=react');
setNews({
news: result.data.hits,
})
};
getNews();
}, []);
return (
<ul>
{news.map(topic => (
<li key={topic.objectID}>{topic.title}</li>
))}
</ul>
);
};
export default NewsHook