defineCustomElement() カスタム要素の定義

最終更新:2026-10-22

defineCustomElement() カスタム要素の定義

defineCustomElement() は Vue コンポーネントを標準の Web Component にラップします。任意のフレームワークやネイティブページで タグとして使えます。

グループレンダー関数と SSR
種類API
スコープグローバル
Vue バージョン3.0+
SSR 対応対応

📝 構文

const MyEl = defineCustomElement({ props: { msg: String }, template: "<p>{{ msg }}</p>" })
customElements.define("my-element", MyEl)

⚙️ 引数

optionsコンポーネント定義(styles 配列でスタイルを注入できます)

戻り値:カスタム要素クラス(customElements.define で登録します)

▶ 例

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

出力:

Renders 'from a custom element'.

💡 ポイント

ℹ️ 補足 技術スタックをまたいでコンポーネントを再利用する場合に有用です。デザインシステムが Vue/React/ネイティブページのすべてに対応できます。
💡 ヒント styles オプションは shadow DOM にスタイルを注入します。カプセル化が強くなります。
⚠️ 注意 カスタム要素はブラウザのネイティブなイベントと属性のプロトコルを使います。要素上で設定できるようにするには、props を明示的に宣言する必要があります。
関連ケースは近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q どんなときに必要ですか?
A Vue 以外のプロジェクトでコンポーネントを再利用したい場合や、プラットフォームの規格に沿って Web Component を提供したい場合です。
Q スタイルはページを汚染しますか?
A shadow DOM(styles オプション)を使えば分離できます。使わなければスタイルはグローバルに効きます。
Q Vue の中でも使えますか?
A 使えますが、普通のシナリオではコンポーネントを直接使えば十分で、カスタム要素を経由する必要はありません。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%