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
計時器,以便在卸載/銷毀組件時可以正確清除計時器。