🙄

Vue3で[Vue warn]: Extraneous non-emits event listeners ...の警告が出たら

2022/03/11に公開

起きていること

Vue3でemitを使って子コンポーネントから親コンポーネントのメソッドを呼ぼうとした時に以下のエラーがコンソールで表示されてしまった。

[Vue warn]: Extraneous non-emits event listeners (remove) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.

対処法

Vue3の公式ドキュメントにもあったが、emits オプションを追加すれば警告が消える。

 <template>
  <div>
    <p>{{ text }}</p>
    <button v-on:click="$emit('accepted')">OK</button>
  </div>
 </template>
 <script>
  export default {
    props: ['text'],
+   emits: ['accepted']
  }
 </script>

Vue3から、プロパティと同様に、コンポーネントが発行するイベントは emits オプションで定義できるようになりました。

Discussion