[英]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.