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 内で実行中のコンポーザブルを含みます)。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%