Vue中$attrs與$listeners的使用教程
介紹
$attrs
繼承所有的父組件屬性(沒有通過 props 接收的屬性還有 class 類名 和 style 樣式 )。
inheritAttrs:
是否非 props 屬性顯示在標(biāo)簽最外層,默認(rèn)值 true ,就是繼承所有的父組件屬性(除了 props 特定綁定外)作為普通的HTML特性應(yīng)用在子組件的根元素上,如果你不希望組件的根元素繼承特性就設(shè)置 inheritAttrs: false? ,但是 class 還是會(huì)繼承。
$listeners
它是一個(gè)對(duì)象,能接收所有的方法綁定,里面包含了作用在這個(gè)組件上的所有監(jiān)聽器,配合 v-on="$listeners" 將所有的事件監(jiān)聽器指向這個(gè)組件的某個(gè)特定的子元素。
舉例
父組件中?
<template> <div id="app"> <Son src="https://img01.yzcdn.cn/vant/logo.png"></Son> </div> </template> <script> import Son from "./components/son.vue"; export default { name: "App", components: { Son, }, }; </script> <style></style>
子組件中
<template> <div id="app"> <Son src="https://img01.yzcdn.cn/vant/logo.png"></Son> </div> </template> <script> import Son from "./components/son.vue"; export default { name: "App", components: { Son, }, }; </script> <style></style>
可見,當(dāng) inheritAttrs 默認(rèn) false 時(shí),屬性是傳入到子組件最外層的
當(dāng) inheritAttrs 為 true 后
當(dāng)使用props接收屬性時(shí),屬性就不會(huì)被顯示
總結(jié):組件標(biāo)簽上傳入的屬性如果子組件沒有接收會(huì)跑到子組件標(biāo)簽最外層。
非 props 屬性可以通過 $attrs 接收 {屬性名:屬性值}
<template> <div> <img v-bind="$attrs" alt="" /> </div> </template> <script> export default { inheritAttrs: false, }; </script> <style scoped> .img { width: 100px; height: 100px; } </style>
當(dāng)給子組件綁定點(diǎn)擊事件時(shí),是不會(huì)觸發(fā)點(diǎn)擊事件的,可以使用 .native 修飾符進(jìn)行綁定成功
或者通過 $listeners 進(jìn)行接收所有方法的綁定
子組件內(nèi)
結(jié)果
總結(jié)?
所有非props屬性都可以通過$attrs接收
使用:v-bind="$attrs" 將所有非props屬性綁定到相應(yīng)標(biāo)簽,也可以用于組件
所有組件上的方法綁定子組件都可以通過$listeners接收
使用:v-on="$listeners"將所有方法又綁定到組件相應(yīng)標(biāo)簽,也可以用于組件
到此這篇關(guān)于Vue中$attrs與$listeners的使用教程的文章就介紹到這了,更多相關(guān)Vue $attrs $listeners內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue2使用cube-ui?實(shí)現(xiàn)搜索過濾、高亮功能
cube-ui?是基于?Vue.js?實(shí)現(xiàn)的精致移動(dòng)端組件庫,由于很長一段時(shí)間沒有學(xué)習(xí)cube-ui?的功能實(shí)現(xiàn)示例代碼了,今天通過本文給大家介紹下Vue2使用cube-ui?實(shí)現(xiàn)搜索過濾、高亮功能,感興趣的朋友跟隨小編一起看看吧2023-01-01Element-UI中關(guān)于table表格的那些騷操作(小結(jié))
這篇文章主要介紹了Element-UI中關(guān)于table表格的那些騷操作(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08vue實(shí)現(xiàn)表單單獨(dú)移除一個(gè)字段驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)表單單獨(dú)移除一個(gè)字段驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Vue3+vuedraggable實(shí)現(xiàn)動(dòng)態(tài)配置頁面
這篇文章主要為大家詳細(xì)介紹了Vue3如何利用vuedraggable實(shí)現(xiàn)動(dòng)態(tài)配置頁面,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-12-12用vue 實(shí)現(xiàn)手機(jī)觸屏滑動(dòng)功能
這篇文章主要介紹了用vue 實(shí)現(xiàn)手機(jī)觸屏滑動(dòng)的功能,文中通過示例代碼給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05富文本編輯器vue2-editor實(shí)現(xiàn)全屏功能
這篇文章主要介紹了富文本編輯器vue2-editor實(shí)現(xiàn)全屏功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05el-table多選toggleRowSelection不生效解決方案
這篇文章主要給大家介紹了關(guān)于el-table多選toggleRowSelection不生效的解決方案,文中通過圖文以及代碼將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08