肥仔教程网

SEO 优化与 Web 开发技术学习分享平台

Vue3非兼容变更——移除$listeners

$listeners对象在Vue3中已经被移除。现在事件监听器是$attrs的一部分。

2.X语法:

在Vue2中,你可以使用this.$attrs和this.$listeners分别访问传递给组件的attribute和事件监听器。结合inheritAttrs:false,开发者可以将这些attrbute和监听器应用到其他元素,而不是根元素:

<template>
  <label>
    <input type="text" v-bind="$attrs" v-on="$listeners" />
  </label>
</template>
<script>
  export default {
    inheritAttrs: false
  }
</script>

3.X语法:

在Vue3.X的虚拟DOM中,事件监听器现在只是以on为前缀的attrbute,这样就成了$attrs对象的一部分,因此$listeners被移除了。

<template>
  <label>
    <input type="text" v-bind="$attrs" />
  </label>
</template>
<script>
export default {
  inheritAttrs: false
}
</script>

如果这个组件接收一个id attribute和一个v-on:close监听器,那么$attrs对象现在将如下所示:

{
  id: 'my-input',
  onClose: () => console.log('close Event triggered')
}
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言