useVisibleTask$()

使用 useVisibleTask$() 在元件恢復後執行程式碼。這在應用程式恢復時,在客戶端設定計時器或串流時很有用。

track()useVisibleTask$()

useVisibleTask$() 會像 useTask$() 一樣接收一個 track() 函式。使用 track() 函式在儲存區更新時觸發效果。有關詳細資訊,請參閱反應性

元件生命週期和 SSR

Qwik 是可恢復的。可恢復性表示應用程式從伺服器啟動,然後轉移到客戶端。在客戶端上,應用程式會從停止的地方繼續執行。一個常見的用例是在伺服器上建立元件、暫停,然後在客戶端上恢復。為了使元件完全正常運作,可能需要在客戶端急切地執行程式碼以設定計時器或串流。

useVisibleTask$() 是一個僅限客戶端的方法。(伺服器上沒有對應的方法。)

注意 如需需要在客戶端和伺服器上執行的行為,請參閱 useTask$()

useVisibleTask$() 何時執行?

客戶端效果代碼在組件恢復後執行。 useVisibleTask$() 方法接受一個額外的參數 ({strategy:'intersection-observer|document-ready|document-idle'}) 來控制效果執行的時機。 有三個選項:

  • intersection-observer(默認):當元素在視口中可見時,任務將首次執行,它在底層使用 IntersectionObserver API。
  • document-ready:當文檔準備就緒時,任務將首次執行,它在底層使用文檔加載事件。
  • document-idle:當文檔處於閒置狀態時,任務將首次執行,它在底層使用 requestIdleCallback API。

範例

此範例顯示了一個渲染在摺疊下方的時鐘組件。 使用 useVisibleTask$() 讓時鐘每秒更新一次當前時間,使其在客戶端上正常工作。 我們提供了工具函數 updateClock 來幫助您實現。

請記住,useVisibleTask$() 應該返回一個清除函數,釋放 setInterval 計時器,以便在卸載/銷毀組件時可以正確清除計時器。

編輯教學