ステートの保存
アプリケーションが役立つためには、ステートを保存する必要があります。そうでない場合は、単なる静的なページになります。
Qwikがアプリケーションの状態を追跡する理由は2つあります。
-
アプリケーションがサーバーで一時停止したときにデータをシリアル化し、クライアントでアプリケーションが再開するときにデシリアル化するため。
-
Qwikがどのコンポーネントを再レンダリングするかを把握できるように、ストアにサブスクリプションを作成するため。Qwikがサブスクリプションを追跡しない場合、アプリケーション全体を再レンダリングする必要があり、これは遅延読み込みの目的を無効にします。
右側のコンポーネントは、まだ機能しません。なぜならcounter
はサブスクリプションのないただのプレーンなオブジェクトだからです。その結果、Qwikはcounter.count
がいつ変更されたかを知らず、したがって<App>
コンポーネントを再レンダリングする必要があることを知りません。
あなたのタスク: 依存関係の追跡と自動再レンダリングを有効にするために、
useStore()
でcounter
をラップしてください。
シリアライズ
HTMLタブを開いて、サーバーによってシリアル化される情報を確認してください。シリアル化情報については、<script type="qwik/json">
ブロックを確認してください。以下に気づくでしょう。
{count: 0}
がシリアライズされた状態にあります。- シリアライズされた状態の最後には
subs
があり、これには"count"
が含まれています。これらのサブスクリプションは、ステートが変化したときにどのコンポーネントを再レンダリングするかをQwikに指示します。
Qwikのステートは、それを生成したコンポーネントに決して結び付けられていません。ステートはアプリケーション内の任意のコンポーネントに渡すことができ、Qwikは必要なサブスクリプションを作成し、影響を受けるコンポーネントのみを再レンダリングします。
チュートリアルの編集