useTask$() - 明示的なリアクティビティ

テンプレートによって作成される暗黙的なリアクティビティに加えて、Qwik はプロパティが変更されたときにコードを明示的に実行することをサポートしています。これは、useTask$() フックを使用して実現されます。useTask$() フックは、コンポーネントがレンダリングされる前に実行され、非同期にすることができます。このフックには、次のフックの実行時またはコンポーネントが削除されたときに呼び出されるクリーンアップ関数を含めることもできます。

この例では、+1 をクリックすると、count が即座に更新されます。ここでやりたいのは、2 秒の遅延後に delay count を更新することです。2 秒が経過する前に count が更新された場合は、タイマーが再起動されます。

useTask$() コールバックは、track 関数を受け取ることに注意してください。track 関数を使用して、どのプロパティがタスクのウォッチャーをトリガーするかを Qwik に伝えます。track 関数は、ストアにサブスクリプションを作成します。useTask$() の各呼び出しで、サブスクリプションはクリアされるため、常に新しいサブスクリプションを設定することが重要です。これは、関数の有効期間中にサブスクリプションのセットが変更された場合に便利です。

useTask$() コールバック関数は、クリーンアップ関数を返すことができます。クリーンアップ関数は、次の useTask$() コールバックの実行時、またはコンポーネントが削除されたときに呼び出されます。この例では、クリーンアップ関数は、setTimeout をクリアするコードを返すために使用されます。

useTask$() コールバックは、コンポーネントがレンダリングされる前に実行されます。これにより、レンダリングで使用される値を計算するために使用できます。この関数は、サーバーとクライアントの両方で実行されます。サーバーの実行では、シリアライズされてクライアントで使用できるサブスクリプションが設定されます。これにより、クライアントはすべてのコンポーネントをダウンロードして、システム用のサブスクリプション情報を回復するために少なくとも 1 回は実行する必要がなくなります。

チュートリアルの編集