useVisibleTask$()
Используйте useVisibleTask$()
для выполнения кода после возобновления работы компонента. Этот приём часто используется для настройки таймеров или потоков, когда приложение возобновляет работу на клиенте.
track()
и useVisibleTask$()
useVisibleTask$()
получает функцию track()
, как и useTask$()
. Используйте функцию track()
для запуска эффекта при обновлении состояния хранилища. Дополнительная информация в разделе реактивность.
Жизненный цикл компонента и SSR
Qwik возобновляем. Возобновляемость означает, что приложение запускается на сервере, а затем передаётся клиенту. На клиенте приложение продолжает выполнение с того места, где остановилось. Частым примером применения является создание компонента на сервере, приостановка, а затем возобновление рабоыт на клиенте. Чтобы сделать компонент полностью функциональным, может потребоваться немедленное выполнение кода на клиенте для установки таймеров или потоков.
useVisibleTask$()
- браузерный метод (на сервере нет эквивалентного метода).
ПРИМЕЧАНИЕ Используйте
useTask$()
для реализации поведения, которое должно работать как на клиенте, так и на сервере.
useVisibleTask$()
?
Когда выполняется Код клиентского эффекта выполняется после возобновления работы компонента. Метод useVisibleTask$()
принимает дополнительный аргумент ({strategy:'intersection-observer|document-ready|document-idle'}
), который контролирует, когда эффект будет выполнен. Есть три варианта:
intersection-observer
(по умолчанию): задача начнёт выполняться когда элемент становится виден в области просмотра, под капотом она использует API IntersectionObserver;document-ready
: задача начнёт выполняться когда документ будет готов, под капотом она использует событие загрузки документа;document-idle
: задача начнёт выполняться когда документ простаивает, под капотом она использует API requestIdleCallback.
Пример
В примере показан компонент часов, который отображается за пределами экрана. Используйте useVisibleTask$()
, чтобы заставить часы обновлять текущее время каждую секунду пока они работают на клиенте. Мы предоставили служебную функцию updateClock
, чтобы помочь вам это реализовать.
Помните, что useVisibleTask$()
должна возвращать функцию очистки, которая освободит таймер setInterval
, чтобы таймер можно было правильно очистить при размонтировании/уничтожении компонента.