高级组件封装v-bind=“$attrs“ v-on=“$listeners“继承原有组件的属性和方法

在Vue开发中,经常使用组件库并进行二次开发。文章详细介绍了如何通过v-bind=$attrs和v-on=$listeners在子组件中继承父组件的属性和事件监听器,以便在多层组件间传递值和处理函数,实现高效复用和封装高频组件。
摘要由CSDN通过智能技术生成

我们进行业务开发的时候, 为了使页面快速成型,通常会使用一些比较常见的的组件库,然后对于高频使用的组件进行二次开发,那么二次开发的组件如何继承原有组件的属性和方法就是比较常见的问题,vue中为我们提供了很好的解决方案
https://v2.cn.vuejs.org/v2/api/#vm-attrs
https://v2.cn.vuejs.org/v2/api/#vm-listeners
在这里插入图片描述

父组件

<template>
  <div>
    <!-- 高级组件封装 -->
    <Son type="primary" content="点击生成随机数" @click="handleClick" />
    <div>{{ random }}</div>
  </div>
</template>

<script>
import Son from './son.vue'
export default {
  name: 'Father',
  components: {
    Son
  },
  data() {
    return {
      random: ''
    }
  },
  methods: {
    handleClick() {
      this.random = Math.random()
    }
  }
}
</script>

<style lang="scss" scoped></style>

子组件

<template>
  <div>
    <!-- 子组件 -->
    <!-- v-bind="$attrs" 包含了父作用域中不作为 prop 被识别 (且获取) 的 attribute 绑定 (class 和 style 除外)。当一个组件没有声明任何
    prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs"
    传入内部组件——在创建高级别的组件时非常有用。 -->
    <!-- 包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="$listeners" 传入内部组件——在创建更高层次的组件时非常有用。 -->
    <el-button v-bind="$attrs" v-on="$listeners">
      {{ content }}
    </el-button>
  </div>
</template>

<script>
export default {
  name: 'Son',
  props: {
    content: {
      type: String,
      default: ''
    }
  },
  data() {
    return {}
  }
}
</script>

<style lang="scss" scoped></style>

关于网络上的一些用法:
vue中使用v-bind=“$attrs“进行多层组件的传值
vue中使用v-on="listeners"进行多层级组件的传值
二次封装高频组件

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值