useEffect 是 React 函式組件中用於處理副作用的 Hook。副作用指的是與組件渲染無直接關聯的任何操作,例如資料獲取、訂閱事件、手動操作 DOM 等。
useEffect 可以用來管理副作用的執行時機,以確保在特定情況下執行特定的程式碼。它接受兩個參數:一是一個函式,用於描述需要執行的副作用操作;二是一個陣列,用於指定當中的依賴項(Dependencies),當這些依賴項發生變化時,useEffect 會重新執行。
只要render(組件渲染)時都會觸發useEffect函式,我們可以感受一下Dependencies。
useEffect(() => {
console.log('use effect ran');
console.log(blogs);
}, [name])
現在dependencies是blogs的name,所以現在除了一開始的initial render會觸發useEffect函式外,除非作者的name有變動,其他都不會觸發函式。
如果有用到函式會顯示,use effect ran
原本每次點delete blog都會跑useEffect函式,因為有重新render
但現在dependencies改為name
所以點delete blog不會跑useeffect函式,除非點了change name。
簡單來說useEffect可以管理執行時機,下篇用它來fetch data。