【前端筆記】【面試題】useEffect 的 return 只會在 unmount 時被觸發嗎
Aug 13, 2024
試想一下這一題,當按下 button 時,useEffect 的 return 函式會被觸發嗎,還是只有在元素 unmount 時被觸發?
答案是會
通常我們會使用 useEffect 來進行輪詢(polling)或監聽某些事件,在每次更新 state 時,return 函式會清除這些副作用(side effects),也就是清除上一輪的 side effects,否則可能會導致記憶體未釋放,進而影響效能,甚至會讓使用者體驗不佳,因此 useEffect 的 return 不會只是在 unmount 時才被觸發。
useEffect(() => {
const intervalId = setInterval(() => {
console.log('Polling...');
}, 1000);
// Return 函式將在依賴項變更或元素 unmount 時被觸發
return () => {
clearInterval(intervalId);
console.log('Cleanup on unmount or dependency change');
};
}, [dependency]);