美文网首页饥人谷技术博客
Vue 事件属性绑定默认和修改

Vue 事件属性绑定默认和修改

作者: 飞天小猪_pig | 来源:发表于2021-12-13 15:26 被阅读0次

Buttondemo组件

<template>
    <Button @click="onClick">你好</Button>
</template>
<script lang="ts">
import Button from '../lib/Button.vue'
export default {
    components:{Button},
    setup(){
      const onClick=()=>{
        console.log('hi')
      }
      return {onClick}
    }
}
</script>

一、Button组件根元素是button

 <template>
    <button>
       <slot />
    </button>
</template>

当我们点击Buttondemo组件click事件时候,正常情况下,点击完就会将事件传入到Button组件中根元素button上。这时我们点击打印出“hi”


1.png

但是如果Button组件根元素不是button,而是div时候,这个时候事件是传入div上,而不是button元素上。

二、Button组件根元素是div

<template>
    <div>
        <button>
            <slot />
        </button>
    </div>
</template>
<style lang="scss" scoped>
  div{
      border:1px solid red;
  }
</style>

当我们点击Buttondemo组件click事件时候,点击完就会将事件传入到Button组件中根元素div上,这时只要我们点击这个div边框之内都能触发click事件。


2.png

三、如何让根元素div里面button触发click事件,
(1)、首先让div不要继承click属性:inheritAttrs:false
(2)、让div里的button绑定事件:v-bind=$attrs $attrs是指所有事件

<template>
<div>
    <button v-bind=$attrs>
        <slot />
    </button>
</div>
</template>
<script lang="ts">
export default {
    inheritAttrs:false    //
}
</script>
<style lang="scss" scoped>
  div{
      border:1px solid red;
  }
</style>

四、当有多个事件属性传入,如何自主放置在不同元素进行触发
(1)、利用context.attrs获取所有属性
(2)、利用ES6析构函数{size,focus,mouseover,click}=context.attrs
(3)、再在不同元素上绑定上面size或focus等

Buttondemo组件

<template>
   <div>
        Button示例
    </div>
    <h1>示例1</h1>
    <div>
        <Button @click="onClick"
                @focus="onClick"
                @mouseover="onClick"
                size="small"
        >你好</Button>
    </div>
</template>

Button组件

<template>
    <div :size="size">
        <button v-bind="rest">
            <slot />
        </button>
    </div>
</template>
<script lang="ts">
export default {
    inheritAttrs:false,
    setup(prop,context){
       const {size,...rest} = context.attrs  //context里面有attrs属性
       return {size,rest}
   }
}
</script>

相关文章

  • Vue 事件属性绑定默认和修改

    Buttondemo组件 一、Button组件根元素是button 当我们点击Buttondemo组件click事...

  • vue学习笔记(二)属性绑定,鼠标事件,事件修饰符,按键修饰符

    vue中属性绑定 vue中事件绑定 在标签方法名前加 @ 进行事件绑定![a标签click成功绑定add方法] 事...

  • 2019-06-29

    vue的特点 Vue 扩展插件 vue的基本使用 模板语法 双大括号表达式 强制数据绑定 绑定事件监听 计算属性和...

  • vue3组件绑定事件

    vue3绑定属性新特性 默认所有属性都绑定到组件的根元素 如果不想绑定属性到根元素,可以配置inheritAttr...

  • Vue-全集

    入门 事件 条件 属性绑定 双向绑定 属性计算 过滤器 组件 路由 Axios.js Vue-cli

  • vue2仿写eleme小结

    Impressions vue中的常用缩写 属性绑定:src === v-bind:src 事件绑定@click ...

  • vue 3.x 学习前 的查缺补漏

    > vue 2 查缺补漏 >>>> 动态 属性绑定 >>>> 循环绑定 >>>> 方法传值 传入事件对象 >>>>...

  • Angular学习笔记-双向绑定

    Angular和Vue一样都是MVVM的框架,MVVM的核心机制就是双向绑定。 双向绑定将属性绑定与事件绑定结合在...

  • Vue3 属性绑定

    在写 Vue3 项目的过程中注意到当父组件给子组件传属性和事件时默认是将所有属性绑定到子组件的 根元素 上 如何根...

  • Vue指令汇总

    数据绑定 属性绑定 判断条件 循环 事件监听 HTML的引入 组件的使用 组件数据的绑定 防止属性被修改——使响应...

网友评论

    本文标题:Vue 事件属性绑定默认和修改

    本文链接:https://www.haomeiwen.com/subject/amqftrtx.html