📄 React Basic & API
1. Can you describe useEffect
?
請描述
useEffect
useEffect
可以理解為在 function component 的設計下,對元件生命週期的控制,針對不同階段去決定是否要執行某些效果或改變狀態。
在 class component 的時代,生命週期可以劃分為三個階段:
componentDidMount
=> 元件渲染完成後
componentDidUpdate
=> 當元件的 state 的值有改變,進行更新
componentWillUnmount
=> 當元件被移除時
因此我們可以透過相同概念來理解 useEffect
,當我想要每次 render 時就觸發一次,那就不需要 填入參數,這包括當 state 改變時若造成畫面也重新渲染時也會觸發:
useEffect(() => {
console.log(1);
});
如果我只想要進入頁面時,只觸發一次,則填入參數 []
:
useEffect(() => {
console.log(1);
}, []);
反之,如果我有一個列表已經用 useState
保存起來,但我希望若列表出現變化時就監聽一次 useEffect
,則可以將變動的變數作為參數填入:
useEffect(() => {
console.log(3);
}, [state]);
最後,如果希望能拿到 state 改變前的值,可以透過回傳的方式:
useEffect(() => {
return () => {
console.log(`Old value:${state}`);
};
}, [state]);