mcpField
R
react-useeffect

react-useeffect

github.com/jarrodwatts開発1.1k195 回インストール41 週間前に更新
リポジトリ

react-useeffect について

React 開発者向けのスキルで、Effect が必要な場面と、レンダー時の計算やイベントハンドラーなどで代替できる場面を判断するための指針を示します。

主な機能

  1. 01外部同期と派生データの区別
  2. 02レンダー時の派生状態計算
  3. 03useMemo による高コスト計算のキャッシュ
  4. 04イベントハンドラーでのユーザー操作処理
  5. 05データ取得時のクリーンアップ

活用シーン

  1. 01props や state 由来データのリファクタリング
  2. 02ユーザー操作に Effect を使わない設計
  3. 03外部サブスクリプション方式の選択
  4. 04取得処理のクリーンアップやフレームワーク機能の利用

インストール

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

$npx skills add https://github.com/jarrodwatts/claude-code-config --skill react-useeffect

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

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

詳細

Effectは本当に必要か?

Effectは React からの脱出ハッチです。外部システムと同期するために使います。外部システムが関係しない場合、Effectは不要なはずです。

クイックリファレンス

状況やってはいけないこと推奨
props/state から導出される状態useState + useEffectレンダー中に計算する
重い計算キャッシュのために useEffect を使うuseMemo
props 変更時の状態リセットsetState を使った useEffectkey prop
ユーザーイベントへの応答state を監視する 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

詳細なガイダンス

コメント