useEffect 的 Effect 意指「副作用」,
即是指 fetch 資料、訂閱事件與改變 DOM,
這些在 render 期間無法完成,
卻又會影響其他 component,
被稱為是「side effect」的行為。
useEffect 是將componentDidMount
、componentDidUpdate
與componentWillUnmount
這三個主要的生命週期方法
整合起來的單一 API,
讓 function component
可以藉由 useEffect 實現這些方法。
useEffect 使用格式如下:useEffect(callback, array?)
setTimeOut
和 setInterval
對應 class component 的三個生命周期
const mounted=useRef();
useEffect(()=>{
if(mounted.current===false){
mounted.current=true;
/* 下面是 componentDidMount*/
/* 上面是 componentDidMount */
}
else{
/* 下面是componentDidUpdate */
/* 上面是componentDidUpdate */
}
return (()=>{
/* 下面是 componentWillUnmount */
/* 上面是 componentWillUnmount */
})
},[dependencies]); // 第二個參數用來限定當哪些變數被改變時要觸發 useEffect,如果使用空陣列,表示只執行一次,沒有任何改變可以再次觸發