vue中v-bind=“$attrs“和v-on=“$listeners“的含義

https://blog.csdn.net/weixin_40825228/article/details/114700505

假定自定義了一個組件 ComponentB, props 接收了name, age兩個參數(shù), ComponentA在調(diào)用ComponentB時這么調(diào)用:

<componentB
  :name="_name"
  :age="_age"
  :address="_address"
  :phone="_phone"
  @playBall="_playBall"
  @study="_study"
>

而ComponentB又調(diào)用了ComponentC, 若想在ComponentC獲取ComponentA傳輸過來的沒被ComponentB接收的非props數(shù)據(jù),則組件ComponentB可以這么寫:

<template>
  <div v-bind="$attrs" v-on="$listeners"></div>
  <componentC />
</template>
<script>
export default {
   indeterminate: true,
   props: {
     name,
     age
   }

則在ComponentC中,可以通過vm.attrs 獲取祖先組件傳輸?shù)臄?shù)據(jù), 通過vm.listeners獲取祖先節(jié)點(diǎn)的methods,栗子:

<template>
</template>
<script>
export default {
  mounted () {
    // 訪問ComponentA傳入的`phone`, ComponentB的props并未接收
    console.log(this.$attrs.phone)
    // 觸發(fā)ComponentA綁定`study`事件, 并非ComponentB emit的
    this.$emit('study')
  }
}
 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容