react について
react は React の UI 開発向けスキルで、コンポーネント、状態管理、ルーティング、パフォーマンス最適化を扱います。React アプリの構築と保守を対象とし、関数コンポーネントと Hooks を中心に、構成や副作用の処理方法も示します。
主な機能
- 01React コンポーネントと JSX の作成
- 02Hooks による状態とライフサイクル管理
- 03再利用可能なコンポーネントとカスタム Hook
- 04Context や状態管理ライブラリの利用
- 05ルーティング設定とレンダリング最適化
活用シーン
- 01Vite または Create React App プロジェクトの作成
- 02状態を持つ UI コンポーネントの実装
- 03React Router によるアプリのルーティング追加
- 04大規模ルートの読み込みと描画の改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ partme-ai/ full-stack-skills --skill reactインストール後、Claude Code で/reactを入力して読み込まれたか確認します。
同梱ファイルLICENSE.txt
詳細
このスキルを使用するタイミング
ユーザーが次のことを希望する場合は、このスキルを使用してください。
- React コンポーネントと JSX でユーザーインターフェースを構築する
- フックを使ってコンポーネントの状態とライフサイクルを管理する
- 再利用可能で合成可能な React コンポーネントを作成する
- Context API または状態管理ライブラリ(Redux、Zustand)を使用する
- Vite または Create React App で React プロジェクトをセットアップする
- React Router でルーティングを実装する
- レンダリングのパフォーマンスを最適化する(React.memo、useMemo、遅延読み込み)
このスキルの使用方法
ワークフロー
- 依頼の領域を特定します(コンポーネントの作成、状態管理、ルーティング、パフォーマンスなど)
- 公式ドキュメントのパターンに従って、React のベストプラクティスを適用します
- 関数コンポーネントとフックを使って JSX/TSX コードを生成します
- 確認します。コンポーネントツリーが正しくレンダリングされ、状態が適切に伝播することを確認します
1. 関数コンポーネント
import { useState } from 'react';
interface UserCardProps {
name: string;
email: string;
onSelect: (name: string) => void;
}
export function UserCard({ name, email, onSelect }: UserCardProps) {
return (
<div className="user-card" onClick={() => onSelect(name)}>
<h3>{name}</h3>
<p>{email}</p>
</div>
);
}
2. 状態とエフェクト
import { useState, useEffect } from 'react';
export function UserList() {
const [users, setUsers] = useState<User[]>([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetch('/api/users')
.then(res => res.json())
.then(data => {
setUsers(data);
setLoading(false);
});
}, []);
if (loading) return <p>Loading...</p>;
return (
<ul>
{users.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}
3. カスタムフック
import { useState, useCallback } from 'react';
function useToggle(initial = false): [boolean, () => void] {
const [value, setValue] = useState(initial);
const toggle = useCallback(() => setValue(v => !v), []);
return [value, toggle];
}
4. Context パターン
import { createContext, useContext, useState, ReactNode } from 'react';
const ThemeContext = createContext<{ dark: boolean; toggle: () => void } | null>(null);
export function ThemeProvider({ children }: { children: ReactNode }) {
const [dark, setDark] = useState(false);
const toggle = () => setDark(d => !d);
return <ThemeContext.Provider value={{ dark, toggle }}>{children}</ThemeContext.Provider>;
}
export function useTheme() {
const ctx = useContext(ThemeContext);
if (!ctx) throw new Error('useTheme must be used within ThemeProvider');
return ctx;
}
ベストプラクティス
- コンポーネントは小さく保ち、単一の責務に集中させます
- 状態は最も近い共通の祖先に引き上げ、広範囲で共有する状態には Context を使用します
- リストをレンダリングするときは、常に安定した
keyプロパティを指定します useEffectの戻り値の関数で副作用(サブスクリプション、タイマー)をクリーンアップします- 不要な再レンダリングを防ぐため、JSX 内でオブジェクトや関数を新たにインライン作成するのは避けます
- 大きなルートをコード分割するには、
React.lazyとSuspenseを使用します
リソース
- 公式ドキュメント:https://react.dev/
- React フックのリファレンス:https://react.dev/reference/react
- Create React App:https://create-react-app.dev/
キーワード
react、React Hooks、JSX、TSX、コンポーネント、状態、props、useEffect、useState、Context API、関数コンポーネント、パフォーマンス、memo、遅延読み込み
コメント
Markdown 対応