React New APIの使用(お約束)

DDD
リリース: 2025-01-14 06:39:42
オリジナル
395 人が閲覧しました

この投稿では、use を使用して Promise から値を読み取る方法をデモします。

リンク

  • デモ

  • コードベース

スニペット

次のコードを確認してみましょう:

import { Suspense } from "react";

export default function Page() {
  const messagePromise = fetchMessages();

  return (
    <Suspense fallback={<p>⌛ waiting for messages...</p>}>
      <Message messagePromise={messagePromise} />
    </Suspense>
  );
}
ログイン後にコピー

注意すべき点がいくつかあります:

  • <サスペンス />が使用されており、基本的にフォールバックが表示されます。この場合: ⌛ メッセージを待っています...、Promise が解決されるまで。

  • messagePromise は、小道具として に渡される Promise です。

それでは、fetchMessages を見てみましょう:

async function fetchMessages() {
  return [
    {
      id: 1,
      text: "message 1",
    },
    {
      id: 2,
      text: "message 2",
    },
  ];
}
ログイン後にコピー

ご覧のとおり、非常に単純な関数です。実際の例では、これはフェッチ要求になる可能性がありますが、簡単にするために、関数は単に配列を返します。 async を使用すると、JavaScript は関数が Promise を返すことを自動的に認識します。

最後に、<メッセージ> を確認してみましょう。コンポーネント:

function Message({ messagePromise }) {
  const comments = use(messagePromise);

  return comments.map((comment) => <p key={comment.id}>{comment.text}</p>);
}
ログイン後にコピー

ここが興味深いところです。 コンポーネントは、prop として messagePromise を受け取ります。前述したように、これは Promise です。

通常、Promise とともに await を使用しますが、React 19 では use を使用して基本的に同じ結果を達成できるようになりました。

await と use の主な違いの 1 つは、await は Promise が解決されるまでレンダリングをブロックするのに対し、use はレンダリングをブロックしないことです。

Promise が解決される前のコンポーネントの外観は次のとおりです。

React  New API use(promise)

そして約束が解決されると:

React  New API use(promise)

結論

use は await と同様に機能し、アプリケーションが SSR を使用するサーバー上で実行されている場合、結果はまったく同じになります。サーバーはどちらの場合でも同じ HTML 応答を返します。

ただし、コードがクライアント上で実行される場合、レンダリングの動作は少し異なります。 await は、Promise が解決されるまでレンダリングをブロックしますが、 use を使用すると、Promise が解決された後にコンポーネントを再レンダリングできます。

以上がReact New APIの使用(お約束)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート