React
UIを「部品」として組み立てる、Metaが開発したJavaScriptライブラリ。
コンポーネント
UIの「部品」。レゴブロックのように組み合わせて画面を作る。
State
コンポーネントが「覚えておく」値。変わると画面が再描画される。
Props
親から子へ渡すデータ。関数の引数のようなもの。
Hooks
useState、useEffectなど、関数コンポーネントに機能を追加するAPI。
Reactとは?
↑ コンポーネントのツリー構造
セットアップ
2025年以降は Vite + TypeScript が標準。Create React App は非推奨。
# Vite(推奨)npm create vite@latest my-app -- --template react-tscd my-appnpm installnpm run devコンポーネント
コンポーネントは「UIを返す関数」。propsで親からデータを受け取る。
function Greeting({ name }: { name: string }) { return <h1>Hello, {name}!</h1>;}
export default Greeting;// 親コンポーネントfunction App() { return <Card title="React" body="UIライブラリ" />;}
// 子コンポーネントfunction Card({ title, body }: { title: string; body: string }) { return ( <div className="card"> <h2>{title}</h2> <p>{body}</p> </div> );}State(状態)
Stateは「コンポーネントが覚えておく値」。変更すると画面が自動で更新される。
Bad
// ❌ Bad: 直接書き換え(動かない)let count = 0;
function Counter() { return ( <button onClick={() => count++}> Count: {count} </button> );}Good
// ✅ Good: useState を使うimport { useState } from 'react';
function Counter() { const [count, setCount] = useState(0);
return ( <button onClick={() => setCount(count + 1)}> Count: {count} </button> );}useEffect
「副作用」を扱うHook。API呼び出し、タイマー設定、DOMの直接操作などに使う。
import { useState, useEffect } from 'react';
function UserProfile({ userId }: { userId: string }) { const [user, setUser] = useState(null);
useEffect(() => { // マウント時にAPIを呼ぶ fetch(`/api/users/${userId}`) .then(res => res.json()) .then(data => setUser(data)); }, [userId]); // userIdが変わったら再実行
if (!user) return <p>Loading...</p>; return <h1>{user.name}</h1>;} Tip: 依存配列 [] を空にすると、マウント時に1回だけ実行される。
次のステップ
演習課題
課題1: コンポーネント
関数コンポーネントを作成してください。
課題2: useState
useState で状態管理を実装してください。