亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么react的useEffect hooks重復不停的運行?

為什么react的useEffect hooks重復不停的運行?

慕無忌1623718 2019-03-15 18:04:38
用cra腳手架運行下面的demo:src/App.jsimport React, {useState, useEffect} from "react"import {InfiniteScroller} from "react-iscroller";import axios from "axios"; function App() {     const [articles, setArticles] = useState([]);     useEffect(() => {         getArticleList().then(res => {             setArticles(res.data.article_list);            console.log(articles);  //控制臺會一直打印這一行         });     });     const getArticleList = params => {        return axios.get('/api/articles', params).then(res => {            return res.data         }, err => {            return Promise.reject(err);         }).catch((error) => {            return Promise.reject(error);         });     };     let renderCell = (item, index) => {        return (             <li key={index} style={{listStyle: "none"}}>                 <div>                     <span style={{color: "red"}}>{index}</span>                     {item.content}                 </div>                 {item.image ? <img src={item.image}/> : null}             </li>         );     };     let onEnd = () => {        //...     };    return (         <InfiniteScroller             itemAverageHeight={66}             containerHeight={window.innerHeight}             items={articles}             itemKey="id"             onRenderCell={renderCell}             onEnd={onEnd}         />     ); }export default App;控制臺會一直打印useEffect中的console.log(articles),是怎么回事?
查看完整描述

2 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

正常的啊,userEffect 這個鉤子函數就是在每次組件渲染時,都會調用一次,而且會先調用鉤子函數的返回值反注冊之前的邏輯,再執行當前的函數體。

查看完整回答
1 反對 回復 2019-03-15
  • 2 回答
  • 0 關注
  • 12155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號