mcpField
R
react-useeffect

react-useeffect

github.com/op0ai開発1777 回インストール42 週間前に更新
リポジトリ

react-useeffect について

React 開発者向けの Hook ガイドです。useEffect を避ける場面と、外部システムとの同期に必要な場面を、代替手段とともに説明します。

主な機能

  1. 01Effect が必要な場面を区別
  2. 02よくあるアンチパターンと代替策
  3. 03レンダー中に値を導出する方法
  4. 04useMemo、key、イベントハンドラーの活用

活用シーン

  1. 01導出データに Effect を使わない設計
  2. 02ユーザー操作による状態変化の処理
  3. 03データ取得にクリーンアップを追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/op0ai/claude-skills --skill react-useeffect

インストール後、Claude Code で/react-useeffectを入力して読み込まれたか確認します。

同梱ファイルalternatives.mdanti-patterns.md

詳細

Effect は必要ないかもしれません

Effect は React の緊急避難口です。外部システムとの同期に使用します。外部システムが関与しない場合、Effect は必要ありません。

クイックリファレンス

状況やらないことやること
props/state から派生する状態useState + useEffectレンダリング中に計算する
負荷の高い計算useEffect でキャッシュするuseMemo
prop の変更時に状態をリセットsetState を伴う useEffectkey prop
ユーザーイベントへの応答状態を監視する useEffectイベントハンドラーを直接使う
変更を親に通知するonChange を呼び出す useEffectイベントハンドラー内で呼び出す
データを取得するクリーンアップなしの useEffectクリーンアップを伴う useEffect またはフレームワーク

Effect が必要な場合

  • 外部システム(React 以外のウィジェット、ブラウザー API)との同期
  • 外部ストアへのサブスクリプション(可能であれば useSyncExternalStore を使用)
  • コンポーネントが表示されたことを契機に実行する分析/ログ記録
  • 適切なクリーンアップを伴うデータ取得(またはフレームワーク組み込みの仕組みを使用)

Effect が不要な場合

  1. レンダリング用のデータ変換 - 最上位で計算すれば、自動的に再実行されます
  2. ユーザーイベントの処理 - イベントハンドラーを使えば、何が起きたかを正確に把握できます
  3. 状態の導出 - 単に計算します:const fullName = firstName + ' ' + lastName
  4. 状態更新の連鎖 - 次の状態をすべてイベントハンドラー内で計算します

判断フローチャート

Need to respond to something?
├── User interaction (click, submit, drag)?
│   └── Use EVENT HANDLER
├── Component appeared on screen?
│   └── Use EFFECT (external sync, analytics)
├── Props/state changed and need derived value?
│   └── CALCULATE DURING RENDER
│       └── Expensive? Use useMemo
└── Need to reset state when prop changes?
    └── Use KEY PROP on component

詳細なガイダンス

コメント