スキル一覧に戻る
Brutus88Ai

react-patterns

by Brutus88Ai

Industrial Metal Website f

0🍴 0📅 2026年1月25日
GitHubで見るManusで実行

SKILL.md


name: react-patterns description: React Best Practices, Server Components, Anti-Waterfall

React Patterns

Komponenten-Hierarchie

1. Server Components (Default in Next.js App Router)

// page.tsx - Server Component (kein "use client")
async function Page() {
  const data = await fetchData(); // Server-side fetch
  return <ClientComponent data={data} />;
}

2. Client Components (nur wenn nötig)

Nur "use client" wenn du brauchst:

  • useState, useEffect, useContext
  • Event-Handler (onClick, onChange)
  • Browser APIs (window, document)
"use client";
import { useState } from 'react';

export function Counter() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}

Anti-Waterfall Patterns

❌ WATERFALL (SCHLECHT)

async function Page() {
  const user = await fetchUser();       // 200ms ⏳
  const posts = await fetchPosts(user); // 300ms ⏳
  const comments = await fetchComments(posts); // 200ms ⏳
  // TOTAL: 700ms sequential
}

✅ PARALLEL (GUT)

async function Page() {
  const [user, posts, settings] = await Promise.all([
    fetchUser(),
    fetchPosts(),
    fetchSettings()
  ]);
  // TOTAL: ~300ms (longest request)
}

✅ SUSPENSE STREAMING (BESSER)

import { Suspense } from 'react';

function Page() {
  return (
    <>
      <Header />
      <Suspense fallback={<PostsSkeleton />}>
        <Posts />
      </Suspense>
      <Suspense fallback={<CommentsSkeleton />}>
        <Comments />
      </Suspense>
    </>
  );
}

State Management

1. Lokaler State (useState)

Nur für UI-State innerhalb einer Komponente.

2. Kontext (useContext)

Für globalen State (Auth, Theme, Cart).

// context/AuthContext.jsx
const AuthContext = createContext();
export const useAuth = () => useContext(AuthContext);

3. URL State (searchParams)

Für filterbaren/teilbaren State:

// ?filter=active&sort=date
const searchParams = useSearchParams();

Lazy Loading

import { lazy, Suspense } from 'react';

const HeavyComponent = lazy(() => import('./HeavyComponent'));

function App() {
  return (
    <Suspense fallback={<Loading />}>
      <HeavyComponent />
    </Suspense>
  );
}

Checkliste

  • Client Components nur wenn nötig
  • Parallele Daten-Fetching (Promise.all)
  • Suspense für Streaming
  • Lazy Loading für schwere Komponenten
  • Kein State-Prop-Drilling (Context nutzen)

スコア

総合スコア

50/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です