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区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3中使用vuex4的实现示例

    Vue3中使用vuex4的实现示例

    本文主要介绍了Vue3中使用vuex4的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 关于antd中select搜索框改变搜索值的问题

    关于antd中select搜索框改变搜索值的问题

    这篇文章主要介绍了关于antd中select搜索框改变搜索值的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 详解Vue中使用Echarts的两种方式

    详解Vue中使用Echarts的两种方式

    这篇文章主要介绍了Vue中使用Echarts的两种方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 详解使用vue-cli脚手架初始化Vue项目下的项目结构

    详解使用vue-cli脚手架初始化Vue项目下的项目结构

    这篇文章主要介绍了详解使用vue-cli脚手架初始化Vue项目下的项目结构,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 浅析Vue3如何实现页面访问拦截

    浅析Vue3如何实现页面访问拦截

    在Vue3中,页面访问拦截(Navigation Guards)是一种常见的路由控制机制,那么Vue3具体是如何实现这一功能的呢,下面就跟随小编一起来学习一下吧
    2024-03-03
  • vue使用Swiper踩坑解决避坑

    vue使用Swiper踩坑解决避坑

    这篇文章主要为大家介绍了vue使用Swiper踩坑及解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 关于Vue不能监听(watch)数组变化的解决方法

    关于Vue不能监听(watch)数组变化的解决方法

    本文主要介绍了Vue不能监听(watch)数组变化的解决方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • vue-devtools 开发工具插件之支持vue3 chrome 浏览器插件

    vue-devtools 开发工具插件之支持vue3 chrome 浏览器插件

    这篇文章主要介绍了vue-devtools 开发工具插件之支持vue3 chrome 浏览器插件,用这个版本主要是为了支持vue3 推荐直接下载,文中给大家提供了下载地址,感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • Vue3 $emit用法指南(含选项API、组合API及 setup 语法糖)

    Vue3 $emit用法指南(含选项API、组合API及 setup 语法糖)

    这篇文章主要介绍了Vue3 $emit用法指南,使用 emit,我们可以触发事件并将数据传递到组件的层次结构中,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • React和Vue实现路由懒加载的示例代码

    React和Vue实现路由懒加载的示例代码

    路由懒加载是一项关键技术,它可以帮助我们提高Web应用的加载速度,本文主要介绍了React和Vue实现路由懒加载的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论