useEffect()是react中的hook函數,作用是用于創建由渲染本身引起的操作,而不是事件的觸發,比如Ajax請求,DOM的更改
首先useEffect()是個函數,接受兩個參數,第一個參數是一個方法,第二個參數是數組 稱為依賴項數組,可以沒有。第二個參數的不同會影響第一個參數方法的使用
依賴項數組不同的區別
另外還有一種情況就是清除useEffect()的副作用,直接在第一個參數函數里面寫一個return一個函數,就會在組件卸載的時候自動清理
import { useEffect, useState } from "react"function Son(){// 開啟一個定時器useEffect(()=>{const timer= setInterval(()=>{console.log("定時器");},1000)return ()=>{clearInterval(timer)}},[])return (<><div>這是 son組件</div></>)
}function App(){// 1.沒有依賴項的時候 初始會觸發 組件更新會觸發const [count,setCount] = useState(0)// useEffect(()=>{// console.log("副作用函數執行與否");// })// 2.當依賴項為空數組的時候 只會在初始時觸發 // useEffect(()=>{// console.log("副作用函數執行 []");// },[])// 3.傳入特定的依賴項 初始時觸發 依賴項變化時觸發useEffect(()=>{console.log("副作用函數執行 []");},[count])// 4.清除useEffect的副作用 通過在第一個參數函數中return一個函數 清除副作用// 最常用的常見就是在組件卸載時自動執行const [show,setShow] = useState(true)return (<><div>useEffect的使用 根據依賴項的不同</div><button onClick={()=>setCount(count+1)}>{count}</button><div>{show&&<Son/>}<button onClick={()=>setShow(false)}>卸載son組件</button></div></>)
}export default App