vue3中的useAttrs和props的区别解析

 更新时间:2023年09月02日 11:32:10   作者:A黄俊辉A  
在vue3中, 提供了一个 useAttrs 的方法它接收到的参数一 prop中可以接收到的数据是基本一样的如果我们想自已写一个组件, 把 elementPlus 中的期中一个组件封装一下,这篇文章主要介绍了vue3中的useAttrs和props的区别,需要的朋友可以参考下

vue3中的useAttrs和props的区别

在vue3中, 提供了一个 useAttrs 的方法它接收到的参数一 prop中可以接收到的数据是基本一样的如果我们想自已写一个组件, 把 elementPlus 中的期中一个组件封装一下。可以这样做

1.新建一个 自定义组件 myBtnCom

<template>
  <div class="mybuttonwrapper">
    <el-button :="$attrs">Success</el-button>
  </div>
</template>
<script setup>
</script>

从上面的代码中, 我们可以在代码中直接使用 $attrs 来接收所有的属性也可以使用 useAttrs 函数import { useAttrs } from “vue”;let $attrs = useAttrs();

父组件中

<template>
  <div class="home-wrapper">Home</div>
  <el-button type="success" color="hotpink"  round @click="changeSuccess">{{suctext}}</el-button>
  <myBtnCom  type="success" color="hotpink" round></myBtnCom>
</template>

在myBtnCom 设置的属性和 elementPlus中的button的属性是一样的, 传到组件内部 ,就可以封装一个和 elementPlus 用法一样的组件了注意: 我们可以使用 useAttrs 接收到组件中传递的属性, 同样我们也可以使用 defineProps来接收, 但是如果我们使用 defineProps 接收过的属性, 会要useAttrs 中消失, 这个特性要注意一下

补充:vue props和attrs

vue3

props 要先声明才能取值,attrs不用声明直接使用($attrs 包含 class and style attribute)

props 不包含事件,attrs包含

props 支持 String 以外的类型,attrs只有 String 类型

props 没有声明的属性,会在 attrs 里,若在 props 内声明了该属性,那么 attrs 里就不会出现该属性

vue2与vue3的不同

包含所有父作用域的绑定 (class 和 style 除外)

props 不包含事件,attrs也不包含,事件通过$listeners监听

补充:

vue2官方

$attrs:

包含了父作用域中不作为 prop 被识别 (且获取) 的 attribute 绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs" 传入内部组件——在创建高级别的组件时非常有用。

$listeners

包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="$listeners" 传入内部组件——在创建更高层次的组件时非常有用。

vue3

$listeners 被移除或整合到 $attrs

$attrs 现在包含 class and style attribute

到此这篇关于vue3中的useAttrs和props的区别的文章就介绍到这了,更多相关vue3 useAttrs和props区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue 路由视图 router-view嵌套跳转的实现

    vue 路由视图 router-view嵌套跳转的实现

    这篇文章主要介绍了vue 路由视图 router-view嵌套跳转,主要实现的内容有制作一个登录页面,跳转到首页,首页包含菜单栏、顶部导航栏、主体,标准的后台网页格式,菜单点击显示不同的页面,感兴趣的小伙伴请参考下面文章内容
    2021-09-09
  • vue报错之exports is not defined问题的解决

    vue报错之exports is not defined问题的解决

    这篇文章主要介绍了vue报错之exports is not defined问题的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • vue实现element上传多张图片浏览删除功能

    vue实现element上传多张图片浏览删除功能

    这篇文章主要介绍了vue实现element上传多张图片浏览删除功能,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10
  • 关于vuex的数据持久化处理方式

    关于vuex的数据持久化处理方式

    这篇文章主要介绍了关于vuex的数据持久化处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue3中element-plus icon图标的正确使用姿势

    vue3中element-plus icon图标的正确使用姿势

    element-plus官方提示,Icon图标正在向SVG Icon迁移,之前使用的Font Icon即将被弃用,下面这篇文章主要给大家介绍了关于vue3中element-plus icon图标的正确使用姿势,需要的朋友可以参考下
    2022-03-03
  • 详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)

    详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)

    本篇文章主要介绍了详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli),具有一定的参考价值,有需要的可以了解下
    2017-08-08
  • vue使用Highcharts实现3D饼图

    vue使用Highcharts实现3D饼图

    这篇文章主要为大家详细介绍了vue使用Highcharts实现3D饼图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vue-amap根据地址回显地图并mark的操作

    vue-amap根据地址回显地图并mark的操作

    这篇文章主要介绍了vue-amap根据地址回显地图并mark的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vuex 项目结构目录及一些简单配置介绍

    vuex 项目结构目录及一些简单配置介绍

    这篇文章主要介绍了vuex 项目结构目录及一些简单配置,需要的朋友可以参考下
    2018-04-04
  • vue3+element-plus Dialog对话框的使用与setup 写法的用法

    vue3+element-plus Dialog对话框的使用与setup 写法的用法

    这篇文章主要介绍了vue3+element-plus Dialog对话框的使用 与 setup 写法的使用,本文通过两种方式结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论