React

コンポーネントベースの UI ライブラリで、宣言的な記法と仮想 DOM で効率的な UI 構築を実現する

フロントエンドUI
React」の技術書を見る (128 冊) →

React とは

React は、Meta (旧 Facebook) が 2013 年にオープンソース化した UI ライブラリで、コンポーネントベースのアーキテクチャと宣言的な記法で UI を構築する。フロントエンド開発で最も広く使われているライブラリだ。

コンポーネント

コンポーネントのコード例を示す。

// 関数コンポーネント (現在の標準)
function UserCard({ name, email }: { name: string; email: string }) {
  return (
    <div className="card">
      <h2>{name}</h2>
      <p>{email}</p>
    </div>
  );
}

// 使用
<UserCard name="Alice" email="alice@example.com" />

Hooks

React 16.8 で導入された Hooks で、関数コンポーネントに状態管理副作用を追加する。

function Counter() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    document.title = `Count: ${count}`;
  }, [count]); // count が変わるたびに実行

  return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}
Hook用途
useState状態管理
useEffect副作用 (API 呼び出し、DOM 操作)
useRefDOM 参照、値の保持 (再レンダリングなし)
useMemo計算結果のメモ化
useCallback関数のメモ化
useContextコンテキストの参照

Server Components (React 19)

Server Components (React 19) のコード例を示す。

// Server Component (デフォルト): サーバーで実行、JS がクライアントに送られない
async function UserList() {
  const users = await db.users.findMany(); // サーバーで直接 DB アクセス
  return <ul>{users.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}

// Client Component: ブラウザで実行
'use client';
function SearchBox() {
  const [query, setQuery] = useState('');
  return <input value={query} onChange={e => setQuery(e.target.value)} />;
}

Server Components はサーバーで実行されるため、DB アクセスや API キーの使用が安全にできる。JavaScript がクライアントに送られないため、バンドルサイズが削減される。

Vue / Svelte との比較

Vue / Svelte との主な違いを以下に比較する。

観点ReactVueSvelte
アプローチライブラリ (自由度高い)フレームワーク (規約あり)コンパイラ
テンプレートJSXSFC (template + script)SFC
状態管理Hooks, Zustand, JotaiComposition API, Pinia$: リアクティブ宣言
エコシステム最大大きい成長中
学習コスト中程度低い低い

Next.js との関係

React 単体はルーティング、SSR、ビルド設定を提供しない。Next.js がこれらを統合し、React アプリケーションのフルスタックフレームワークとして機能する。React チームも Next.js を推奨している。

実務での活用方法は関連書籍にも詳しい。

この記事は役に立ちましたか?

関連用語

関連する記事