上一篇文章提到了useeffect
的使用方法,如果要執行多個useEffect
是可以的嗎?
答案是沒有問題的,可以同時執行多個useEffect
const App = () => {
const [user, setUser] = useState(null)
useEffect(() => {
// 初始化,獲取數據,僅會執行一次
setUser(userData)
}, [])
useEffect(() => {
// 更新數據
})
return (
<div>
<p>{user && user.name}</p>
<button onClick={() => setUser()}>click</button>
</div>
)
}
useEffcet清理
React 中兩種副作用,一種是需要清理的,另一種則是不需要清理的。
網路請求、手動變更 DOM、和 logging 等…這些是不需要清理的,useEffect會自動處理。
訂閱和取消訂閱,事件監聽和取消事件監聽,這種是需要清理的。
下面是useEffect清理機制:
useEffect 在每次執行之前都會自動清理之前的 effect。
effect 中可以返回一個函式用於清理工作。
useEffect(() => {
return () => {
// 手動清理 effect
// 做一些清理的工作,在該元件卸載的時候執行
}
})