ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
Reactは、Meta(旧Facebook)が開発・公開しているユーザーインターフェース(UI)構築用のJavaScriptライブラリです。Webアプリの画面を「コンポーネント」という再利用可能な部品に分割して組み立てる設計が特徴で、SPA(シングルページアプリケーション)や動的なUIの開発で広く使われています。Vue.jsやAngularと並ぶフロントエンドの代表格であり、求人・学習資料・エコシステムの厚さでも群を抜いています。本記事ではReactの中心概念であるコンポーネント・仮想DOM・JSX・Hooksを整理します。
Reactの主要概念
1. コンポーネントベースのアーキテクチャ
ReactはUIを小さな再利用可能な部品(コンポーネント)に分割します。ボタン、フォーム、リスト項目などを独立した部品として作り、それらを組み合わせて画面を構築します。これにより開発が効率化し、同じ部品を複数箇所で使い回せます。
2. 仮想DOM(Virtual DOM)
Reactは実際のDOMの軽量なコピー(仮想DOM)をメモリ上に保持します。状態が変化すると新旧の仮想DOMを比較(差分検出)し、変更が必要な部分だけを実DOMに反映します。DOM操作は重い処理のため、この仕組みがパフォーマンスとスムーズなユーザー体験を支えています。
3. JSX(JavaScript XML)
ReactではJSXというJavaScriptの構文拡張を使い、HTMLに似た記法でUIを記述します。見た目(マークアップ)と動作(ロジック)を同じファイル内に近接して書けるため、コンポーネントの全体像を把握しやすくなります。
// JSX:HTMLのようにUIを記述できる
function Welcome(props) {
return <h1>こんにちは、{props.name}さん</h1>;
}
4. 単方向データフローとprops/state
Reactのデータは親から子へ一方向に流れます。親が子へ渡す読み取り専用の入力がprops、コンポーネント自身が持つ可変の状態がstateです。stateが更新されると、Reactが自動的に該当コンポーネントを再描画します。
使い方・手順
現在のReactは関数コンポーネント+Hooksが標準です。状態はuseState、副作用(データ取得やイベント登録など)はuseEffectで扱います。
import { useState } from "react";
function Counter() {
const [count, setCount] = useState(0); // 状態の宣言
return (
<div>
<p>現在のカウント: {count}</p>
<button onClick={() => setCount(count + 1)}>
+1する
</button>
</div>
);
}
export default Counter;
ボタンを押すとsetCountが状態を更新し、Reactが仮想DOMの差分を計算して画面の数字だけを書き換えます。手動でDOMを触る必要はありません。
副作用にはuseEffectを使います。例えば初回表示時にAPIからデータを取得する場合は次のように書きます。
import { useState, useEffect } from "react";
function UserList() {
const [users, setUsers] = useState([]);
useEffect(() => {
fetch("/api/users")
.then((res) => res.json())
.then((data) => setUsers(data));
}, []); // 第2引数 [] で初回のみ実行
return (
<ul>
{users.map((u) => (
<li key={u.id}>{u.name}</li>
))}
</ul>
);
}
実用例・Tips
- コンポーネント分割:1コンポーネント1責務を意識し、大きくなったら小さく分ける。再利用と保守性が上がる。
- keyを付ける:リスト描画では各要素に一意の
keyを付与する。差分検出が正確になり、無駄な再描画を防げる。 - 状態は最小限に:計算で導ける値はstateにせず、描画時に算出する。状態が増えるほどバグの温床になる。
- エコシステム活用:ルーティングはReact Router、状態管理はRedux/Zustand、フレームワークとしてはNext.jsが定番。SSRやルーティングを一括で面倒見てくれる。
注意点・落とし穴
- stateの直接変更は禁止:
count++のように直接書き換えず、必ずsetCountなどの更新関数を使う。直接変更すると再描画されない。 - useEffectの依存配列:第2引数の依存配列を誤ると、実行されない/無限ループになる。参照する値を正しく列挙する。
- Hooksのルール:Hooksはコンポーネントのトップレベルでのみ呼ぶ。条件分岐やループの中で呼ぶと壊れる。
- 過剰な再描画:不要な再描画はパフォーマンス低下の原因。
useMemoやReact.memoで最適化する。
関連リンク
Reactを実際に動かすには開発環境のセットアップが必要です。インストールとプロジェクト作成の具体的な手順はReactのインストール手順を参照してください。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Scratch 作品の公開方法 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?