emits 発行するイベントの宣言

最終更新:2026-10-22

emits 発行するイベントの宣言

emits オプションは、コンポーネントが親に向けて発行するイベントを宣言します。ドキュメント化と実行時の検証の役割を持ち、未宣言のイベントは警告が出ます。

グループオプション: 状態
種類オプション
スコープコンポーネント内
Vue バージョン3.0+
SSR 対応対応

📝 構文

export default {
  emits: ["change", "submit"],
  methods: {
    fire() { this.$emit("change", 1) }
  }
}

⚙️ 引数

value配列またはオブジェクト:オブジェクト形式では検証関数 (payload) => boolean を書けます

戻り値:戻り値なし(this.$emit で発火します)

▶ 例

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

出力:

Clicking shows 'Message received: from child'.

💡 ポイント

💡 ヒント 宣言すると IDE と開発者ツールの両方でイベントが認識され、親コンポーネントのテンプレートでも補完が効きます。
⚠️ 注意 v-model をサポートする場合の補足:update:modelValue も emits に書かないと警告が出ます。
ℹ️ 補足 イベント名は kebab-case を推奨します(HTML 属性は大文字小文字を区別せず、camelCase は小文字化されます)。
関連ケースは近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q emits を宣言しないとどうなりますか?
A 機能は動きますが、開発環境で警告が出て、透過属性としてイベントリスナーが誤って落ちてくることがあります。
Q 複数の引数を渡せますか?
A できます。$emit('change', a, b) とすると、親の処理関数が順番に受け取ります。
Q イベント名に camelCase を使えますか?
A 非推奨です。DOM テンプレートでは名前が小文字化されるため、kebab-case が最も安全です。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%