resolveComponent() 名前によるコンポーネントの解決
最終更新:2026-10-22
resolveComponent() 名前によるコンポーネントの解決
resolveComponent() はレンダー関数内で、登録名からコンポーネントを解決します。得た定義を h() でレンダリングできます。
| グループ | レンダー関数と SSR |
|---|---|
| 種類 | API |
| スコープ | コンポーネント内 |
| Vue バージョン | 3.0+ |
| SSR 対応 | 対応 |
📝 構文
const Comp = resolveComponent("my-button")
return h(Comp, null, "クリック")
⚙️ 引数
| name | コンポーネントの登録名(文字列。大文字小文字の一致が必要) |
|---|
戻り値:コンポーネント定義(見つからない場合は文字列名を返し警告)
▶ 例
以下のコードを編集して結果を確認しましょう:
出力:
Renders a button labelled 'button from render'.
💡 ポイント
ℹ️ 補足 レンダー関数でのみ必要です。テンプレートコンパイラはコンポーネント名を自動的に解決します。
💡 ヒント 通常はコンポーネントを直接 import して h(Comp) とする方が明確です。名前による解決は動的/グローバル登録の場面に向いています。
⚠️ 注意 名前が未登録の場合は元の文字列が返り、ネイティブタグとしてレンダリングされ警告が出ます。
🏷️ 関連レンダー関数と SSR
💡 関連ケース
関連ケースは近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q 直接 import してはいけないのですか?
A 動的な名前(設定駆動)のシナリオでは静的な import ができないため、名前による解決が唯一の手段です。
Q 大文字小文字は区別されますか?
A はい。登録名と一致する必要があります(kebab-case が一般的です)。
Q SSR 環境でも使えますか?
A 使えます。解決はランタイムの同期処理です。