Хранение состояния
Приложения должны уметь работать с состоянием, чтобы быть полезными, иначе они будут являться просто статическими страницами.
Qwik отслеживает состояние приложения по двум причинам:
-
Для сериализации данных, когда приложение приостанавливается на сервере, и для десериализации, когда приложение возобновляет работу на клиенте.
-
Для создания подписок на изменения в хранилище, чтобы Qwik знал, какие компоненты нужно перерендерить. Если бы Qwik не отслеживал подписки, ему пришлось бы заново отображать всё приложение, что лишало бы смысла процесс отложенной загрузки.
Компонент справа ещё не работает, потому что counter
— это просто объект без подписок. В результате Qwik не знает, когда изменяется counter.count
, и когда выполнить ререндер компонента <App>
.
Ваша задача: Заключить
counter
вuseStore()
, чтобы включить отслеживание зависимостей и автоматический повторный рендер.
Сериализация
Откройте вкладку HTML, чтобы увидеть, какая информация сериализуется сервером. Найдите в блоке <script type="qwik/json">
сериализованную информацию и обратите внимание на следующее:
{count: 0}
находится в сериализованном состоянии.- В конце сериализованного состояния находятся
subs
, которые содержат"count"
. Эти подписки сообщают Qwik, какой компонент следует повторно отображать при изменении состояния.
Состояние Qwik никоим образом не привязано к компоненту, который его создал. Состояние может быть передано любому компоненту в приложении, и Qwik создает необходимые подписки для повторного рендера только требуемых компонентов.
Edit Tutorial