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实现加载页

    使用vue实现加载页

    这篇文章主要为大家详细介绍了使用vue实现加载页,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 详解基于webpack和vue.js搭建开发环境

    详解基于webpack和vue.js搭建开发环境

    本篇文章主要介绍了详解基于webpack和vue.js搭建开发环境 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • vue-router2.0 组件之间传参及获取动态参数的方法

    vue-router2.0 组件之间传参及获取动态参数的方法

    下面小编就为大家带来一篇vue-router2.0 组件之间传参及获取动态参数的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能

    Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能

    这篇文章主要为大家详细介绍了Vue2.0实现调用摄像头进行拍照功能,以及图片上传功能引用exif.js,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Vue脚手架的简单使用实例

    Vue脚手架的简单使用实例

    这篇文章主要介绍了Vue脚手架的简单使用实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Vue 按钮居中、按钮居左、按钮居右的实现代码

    Vue 按钮居中、按钮居左、按钮居右的实现代码

    在 Vue 中,如果需要将按钮居中显示,可以使用 CSS 中的 `text-align: center` 属性来实现,本文通过实例代码给大家介绍Vue 按钮居中、按钮居左、按钮居右的实现代码,感兴趣的朋友一起看看吧
    2023-10-10
  • vue项目引入Iconfont图标库的教程图解

    vue项目引入Iconfont图标库的教程图解

    这篇文章主要介绍了vue项目引入Iconfont图标库的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • 通过Vue实现Excel文件的上传和预览功能

    通过Vue实现Excel文件的上传和预览功能

    在业务系统中,Excel 文件作为一种常用的数据存储和传输格式,经常需要被处理和展示,这篇文章将讲解如何通过 Vue 和 xlsx.js 实现 Excel 文件的上传和预览功能,需要的朋友可以参考下
    2025-04-04
  • 如何理解Vue的render函数的具体用法

    如何理解Vue的render函数的具体用法

    本篇文章主要介绍了如何理解Vue的render函数的具体用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Vuex实现数据共享的方法

    Vuex实现数据共享的方法

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。这篇文章主要介绍了Vuex实现数据共享的方法,需要的朋友可以参考下
    2019-12-12

最新评论