vue3中的useAttrs和props的區(qū)別解析
vue3中的useAttrs和props的區(qū)別
在vue3中, 提供了一個 useAttrs 的方法它接收到的參數(shù)一 prop中可以接收到的數(shù)據(jù)是基本一樣的如果我們想自已寫一個組件, 把 elementPlus 中的期中一個組件封裝一下??梢赃@樣做
1.新建一個 自定義組件 myBtnCom
<template>
<div class="mybuttonwrapper">
<el-button :="$attrs">Success</el-button>
</div>
</template>
<script setup>
</script>從上面的代碼中, 我們可以在代碼中直接使用 $attrs 來接收所有的屬性也可以使用 useAttrs 函數(shù)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 設(shè)置的屬性和 elementPlus中的button的屬性是一樣的, 傳到組件內(nèi)部 ,就可以封裝一個和 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 內(nèi)聲明了該屬性,那么 attrs 里就不會出現(xiàn)該屬性
vue2與vue3的不同
包含所有父作用域的綁定 (class 和 style 除外)
props 不包含事件,attrs也不包含,事件通過$listeners監(jiān)聽
補充:
vue2官方
$attrs:
包含了父作用域中不作為 prop 被識別 (且獲取) 的 attribute 綁定 (class 和 style 除外)。當(dāng)一個組件沒有聲明任何 prop 時,這里會包含所有父作用域的綁定 (class 和 style 除外),并且可以通過 v-bind="$attrs" 傳入內(nèi)部組件——在創(chuàng)建高級別的組件時非常有用。
$listeners
包含了父作用域中的 (不含 .native 修飾器的) v-on 事件監(jiān)聽器。它可以通過 v-on="$listeners" 傳入內(nèi)部組件——在創(chuàng)建更高層次的組件時非常有用。
vue3
$listeners 被移除或整合到 $attrs
$attrs 現(xiàn)在包含 class and style attribute
到此這篇關(guān)于vue3中的useAttrs和props的區(qū)別的文章就介紹到這了,更多相關(guān)vue3 useAttrs和props區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中的雙向數(shù)據(jù)綁定原理與常見操作技巧詳解
這篇文章主要介紹了vue中的雙向數(shù)據(jù)綁定原理與常見操作技巧,結(jié)合實例形式詳細分析了vue中雙向數(shù)據(jù)綁定的概念、原理、常見操作技巧與相關(guān)注意事項,需要的朋友可以參考下2020-03-03
Vue項目webpack打包部署到Tomcat刷新報404錯誤問題的解決方案
今天很郁悶,遇到這樣一個奇葩問題,使用webpack打包vue后,將打包好的文件,發(fā)布到Tomcat上,訪問成功,但是刷新后頁面報404錯誤,折騰半天才解決好,下面小編把Vue項目webpack打包部署到Tomcat刷新報404錯誤問題的解決方案分享給大家,需要的朋友一起看看吧2018-05-05
3分鐘搞定vite項目(vue/react)使用vite-plugin-pwa配置為pwa應(yīng)用
這篇文章主要介紹了3分鐘搞定vite項目(vue/react)使用vite-plugin-pwa配置為pwa應(yīng)用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-02-02
解決error?Couldn‘t?find?a?package.json?file?in報錯的問題
文章介紹了npm依賴包緩存導(dǎo)致重復(fù)下載的問題,提供了刪除node_modules、清除緩存或重啟項目的解決方法,并附帶了查看npm緩存位置的命令2026-03-03
使用Vue3的watch實現(xiàn)數(shù)據(jù)的實時更新(附詳細代碼)
vue.js是一個輕量級的前端框架,你可以使用它來實現(xiàn)數(shù)據(jù)實時刷新,下面這篇文章主要介紹了使用Vue3的watch實現(xiàn)數(shù)據(jù)的實時更新的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-08-08

