mcpField
R
react-useeffect

react-useeffect

github.com/davila7開発33.0k454 回インストール今日更新
リポジトリ

react-useeffect について

React 開発者向けに、Effect を使う場面とレンダリング中やイベントハンドラーで処理する場面を整理するガイダンスです。不要な Effect を避け、外部システムとの同期など適切な用途を判断できます。

主な機能

  1. 01派生状態とレンダリング計算のルール
  2. 02useMemo と key プロパティによる代替策
  3. 03イベントハンドラーと状態更新の指針
  4. 04Effect と外部システム同期の判断基準
  5. 05データ取得時のクリーンアップ指針

活用シーン

  1. 01表示用データ計算に使う Effect の置き換え
  2. 02プロパティ変更時の状態リセット方法の選択
  3. 03状態監視を使わないユーザー操作の処理
  4. 04ブラウザー API やサブスクリプションとの同期

インストール

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

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

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

alternatives.md
anti-patterns.md
README.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

詳細なガイダンス

コメント