【React.js/Next.js】React API use 完全入門

React.js / Next.js

React API の use ってどんな機能があるの?

今回は、React 19 以降で利用できるようになった新しい React APIuse について、仕組みや基本的な使い方、代表的なユースケースまでをわかりやすく解説します

use とは?

use は、PromiseContext などを描画(レンダリング)中に読み取り、 必要に応じて レンダリングを一時停止 させる React API です。

特徴

  • PromiseContext をレンダリング中に読み取れる
  • Promise が解決されるまで、レンダリングを一時停止する
  • Suspense と組み合わせて使う
  • 主に Server Components 向けに設計されている

use の基本

Context から値の取得 ※ useContext と同じ機能

全体の流れ

  1. createContextContext を作る
  2. Contextvalue に値を設定する
  3. use で値を 受け取る
  4. use から取得した値で スタイルを変更
  5. use から取得した値を テーマに表示
  6. 取得した値(‘light’ or ‘dark’)を反転 して変更

Promise から値の取得

全体の流れ

  1. ユーザーデータの Promiseの取得
  2. 取得したユーザーデータの Promiseを格納
  3. ユーザーデータの Promise から ユーザー情報をuseにて取得
    ユーザー情報 を取得して表示されるまで、fallback(Loading…) を表示
  4. 取得した ユーザー情報をリスト化して表示

useContext と use の比較・違い

useContext は Client ComponentsのみContext の値を扱うための基本的な Hook で、useuseContextClient ComponentsContext の値を扱う機能に加えて、Server ComponentsPromiseなどの非同期処理 を扱うことが可能です。

上記により、公式でも use を「useContext よりも優先的に使用してください」と記載があるため、useContext にこだわりがない場合は、use を使うようにしましょう。

use でコンテクストを読み取る  (公式サイト)

use が登場した背景と解決したこと

従来の Hooks では Client Componentsのみ のため、Server Components では Promise を待ってから 描画(レンダリング)することができませんでした。

use の登場により、Server Components内Promise を直接扱えるようになり、Suspense と組み合わせた非同期でのレンダリング処理が可能 になりました。

use(React 19以降)

  • Promise や Context を直接読むためのAPI
  • 主に Server Components で使う ※Client Componentsでも使用可能
  • Suspense とセットで動作する

useContext

  • Context に保存された値を取得するための Hook
  • Client Componentsのみ で使う
  • props drilling(propsのバケツリレー を回避するための仕組み

useContext と use の比較表

観点useuseContext
主な用途Promise / Contextの取得Contextの値取得
登場時期React 19従来から
主な使用場所Server Components
※Client Componentsでも使用可能
Client Components のみ
非同期対応
Suspense前提

まとめ

React API の use  について、いかがでしたでしょうか?

use は、PromiseContext などを描画(レンダリング)中に読み取り、 必要に応じて レンダリングを一時停止 させる React API です。

まずは基本的な使い方をしっかり押さえ、小さな コンポーネント から試しながら、少しずつ use に慣れていきましょう。

公式サイト

use

tachu × tachu

Laravel / React フルスタックエンジニア

Webエンジニア歴15年、フリーランス歴8年で、PHP / Laravel を中心に、
React.js / Vue.js を用いたフルスタックでのWeb開発をしています。

技術記事は Laravel / React / Web開発 を中心に書いています。

Webサービスの開発、既存システム改善、機能追加、技術相談、小規模な開発など、お気軽にご相談ください。

React.js / Next.js
シェアする

コメント

タイトルとURLをコピーしました