defer

ストリーミングデータの使用方法については、ストリーミングガイドをご覧ください。

これはストリーミング/遅延レスポンスを作成するためのショートカットです。utf-8エンコーディングを使用していると想定しています。開発者の観点から見ると、json()と同じように動作しますが、UIコンポーネントにプロミスを転送する機能があります。

import { defer } from "@remix-run/node"; // または cloudflare/deno
 
export const loader = async () => {
  const aStillRunningPromise = loadSlowDataAsync();
 
  // これはプロミスを待たずに記述できます。
  return defer({
    critical: "data",
    slowPromise: aStillRunningPromise,
  });
};

ステータスコードとヘッダーを渡すこともできます。

export const loader = async () => {
  const aStillRunningPromise = loadSlowDataAsync();
 
  return defer(
    {
      critical: "data",
      slowPromise: aStillRunningPromise,
    },
    {
      status: 418,
      headers: {
        "Cache-Control": "no-store",
      },
    }
  );
};