[英]why console.log inside the useEffect runs twice
我目前正在使用 react 项目,该项目从 api 获取数据并将其显示在控制台上。
虽然我在 useEffect 钩子中只写了一次 console.log()(带有 [articles] 依赖项),但 web 浏览器的 console.log 总是像这样显示 console.log 两次:在此处输入图像描述
但我不知道为什么..
在我的想法中,当第一个 useEffect 钩子设置的“文章”state 时,第二个 useEffect 钩子激活并且 console.log 应该只运行一次......但它没有。
这是我的代码
const NewsList = () => { const [articles, setArticles] = useState([]); useEffect(()=> { const getData = async () => { const response = await axios.get(`https://newsapi.org/v2/top-headlines?country=kr&apiKey='' `); setArticles(response.data.articles); } getData(); },[]) useEffect(()=> { console.log(articles); },[articles]) return ( <div className="newsListBlock"> <NewsArticle article={article}></NewsArticle> <NewsArticle article={article}></NewsArticle> <NewsArticle article={article}></NewsArticle> <NewsArticle article={article}></NewsArticle> <NewsArticle article={article}></NewsArticle> </div> ); };
来自官方反应文档:
通过使用这个 Hook,你告诉 React 你的组件需要在渲染之后做一些事情。
所以这个useEffect
将在组件的第一次渲染时运行一次,然后由于使用更新articles
的setArticles
function 而运行第二次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.