useTask$() - Явная реактивность

В дополнение к неявной реактивности, создаваемой шаблонами, Qwik поддерживает явное выполнение кода при изменении свойства. Это достигается с помощью хука useTask$(). Хуки useTask$() выполняются перед рендером компонента и могут быть асинхронными. Хук также может иметь функцию очистки, которая вызывается при следующем выполнении хука или при удалении компонента.

В этом примере нажатие на +1 сразу же обновляет count. Мы хотели бы обновлять значение delay count после 2-секундной задержки. Если count обновляется до истечения 2 секунд, то таймер перезапускается.

Обратите внимание, что обратный вызов useTask$() получает функцию track. Используйте функцию track, чтобы сообщить Qwik, какие свойства должны вызвать срабатывание наблюдателя задачи. Функция track создает подписки в состоянии. При каждом вызове useTask$() подписки очищаются, поэтому важно всегда устанавливать новый набор подписок. Это полезно, если набор подписок меняется во время жизни функции.

Функция обратного вызова useTask$() может возвращать функцию очистки. Функция очистки вызывается при следующем выполнении useTask$() или при удалении компонента. В нашем случае функция cleanup используется для возврата кода, который очищает setTimeout.

Обратные вызовы useTask$() выполняются до того, как компонент будет отрендерен. Это позволяет использовать их для вычисления значений, используемых при рендере. Функция работает как на сервере, так и на клиенте. Выполнение на сервере устанавливает подписки, которые затем сериализуются и доступны на клиенте. Это избавляет клиента от необходимости загружать все компоненты и выполнять их по крайней мере один раз, чтобы восстановить информацию о подписке для системы.

Edit Tutorial