ステートの保存

アプリケーションが役立つためには、ステートを保存する必要があります。そうでない場合は、単なる静的なページになります。

Qwikがアプリケーションの状態を追跡する理由は2つあります。

  1. アプリケーションがサーバーで一時停止したときにデータをシリアル化し、クライアントでアプリケーションが再開するときにデシリアル化するため。

  2. Qwikがどのコンポーネントを再レンダリングするかを把握できるように、ストアにサブスクリプションを作成するため。Qwikがサブスクリプションを追跡しない場合、アプリケーション全体を再レンダリングする必要があり、これは遅延読み込みの目的を無効にします。

右側のコンポーネントは、まだ機能しません。なぜならcounterはサブスクリプションのないただのプレーンなオブジェクトだからです。その結果、Qwikはcounter.countがいつ変更されたかを知らず、したがって<App>コンポーネントを再レンダリングする必要があることを知りません。

あなたのタスク: 依存関係の追跡と自動再レンダリングを有効にするために、useStore()counterをラップしてください。

シリアライズ

HTMLタブを開いて、サーバーによってシリアル化される情報を確認してください。シリアル化情報については、<script type="qwik/json">ブロックを確認してください。以下に気づくでしょう。

  1. {count: 0}がシリアライズされた状態にあります。
  2. シリアライズされた状態の最後にはsubsがあり、これには"count"が含まれています。これらのサブスクリプションは、ステートが変化したときにどのコンポーネントを再レンダリングするかをQwikに指示します。

Qwikのステートは、それを生成したコンポーネントに決して結び付けられていません。ステートはアプリケーション内の任意のコンポーネントに渡すことができ、Qwikは必要なサブスクリプションを作成し、影響を受けるコンポーネントのみを再レンダリングします。

チュートリアルの編集