iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
Modern Web

Dear React 修煉之路系列 第 17

(D-17) Dear React 修煉之路:React useEffect - 3

  • 分享至 

  • xImage
  •  

上一篇文章提到了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
      // 做一些清理的工作,在該元件卸載的時候執行
    }
  })

上一篇
(D-16) Dear React 修煉之路:React useEffect - 2
下一篇
(D-18) Dear React 修煉之路:React | useContext -1
系列文
Dear React 修煉之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言