onScopeDispose() スコープ破棄時のコールバックを登録する

最終更新:2026-10-22

onScopeDispose() スコープ破棄時のコールバックを登録する

onScopeDispose() は現在のスコープが停止するときにクリーンアップを実行します。コンポーザブル内でグローバルリスナーやタイマーの解除に使います。

グループリアクティビティ: 応用
種類API
スコープコンポーネント内
Vue バージョン3.0+
SSR 対応対応

📝 構文

onScopeDispose(() => {
  window.removeEventListener('resize', onResize)
})

⚙️ 引数

fnクリーンアップ関数(複数回登録できます)
failSilentlytrue の場合、アクティブなスコープがなくてもエラーにしません(3.5+)

戻り値:なし

▶ 例

以下のコードを編集して結果を確認しましょう:

出力:

Shows the current window width, updating as you resize.

💡 ポイント

ℹ️ 補足 onUnmounted との違いは、コンポーネントのアンマウントだけでなく任意のスコープ(effectScope を含む)に紐づく点です。
💡 ヒント コンポーザブルではこちらを優先しましょう。ユーザーが effectScope 内で呼んでも正しくクリーンアップされます。
⚠️ 注意 アクティブなスコープ内で同期的に呼ぶ必要があります。非同期コールバック内で呼ぶとエラーになります。
関連ケースは近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q onScopeDispose と onUnmounted、どちらを使うべきですか?
A コンポーネントに書くなら onUnmounted、再利用する関数に書くならより汎用的な onScopeDispose を使います。
Q 複数のクリーンアップ関数を登録できますか?
A 登録できます。登録した順番に実行されます。
Q アクティブなスコープがないとどうなりますか?
A 警告が出ます。3.5 以降は第 2 引数 failSilently で黙らせられます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%