hasInjectionContext() ここで安全に inject できるか判定する
最終更新:2026-10-22
hasInjectionContext() ここで安全に inject できるか判定する
hasInjectionContext() は、現在が inject を使えるコンテキスト(setup やコンポーネント内部)かどうかを判定します。共通ユーティリティを書くときの事前チェックに使います。
| グループ | 依存性の注入 |
|---|---|
| 種類 | API |
| スコープ | コンポーネント内 |
| Vue バージョン | 3.3+ |
| SSR 対応 | 対応 |
📝 構文
if (hasInjectionContext()) {
const cfg = inject('config')
}
戻り値:真偽値
▶ 例
以下のコードを編集して結果を確認しましょう:
出力:
Shows 'Context available: true'.
💡 ポイント
ℹ️ 補足 ライブラリやユーティリティ関数では、まずコンテキストを調べて、非コンポーネント環境での inject 呼び出しによる警告を避けます。
⚠️ 注意 3.3 以降で使えます。低いバージョンのプロジェクトでは「setup 内で try/catch」や明示的な引数渡しで代用します。
🏷️ 関連依存性の注入
💡 関連ケース
関連ケースは近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q これを使わないとどうなりますか?
A 非コンポーネント環境で inject を呼ぶと警告が出て undefined が返り、ロジックが静かに壊れる可能性があります。
Q 主に誰が使うものですか?
A コンポーネントライブラリやコンポーザブルです。注入による設定も、純粋な JS 環境での利用も両方サポートしたいときに使います。
Q 「setup の中」と同じ意味ですか?
A ほぼそうです。inject が許可される実行コンテキストすべてで true になります(effectScope 内で実行中のコンポーザブルを含みます)。