" />

亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Vue中$props、$attrs和$listeners的使用方法

 更新時間:2021年12月31日 15:40:03   作者:等風來呀  
本文主要介紹了Vue中$props、$attrs和$listeners的使用詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

背景

現(xiàn)在我們來討論一種情況,父組件與孫子組件怎么通信,我們有多少種解決方案?

  • 我們使用VueX來進行數(shù)據(jù)管理,但是如果項目中多個組件共享狀態(tài)比較少,項目比較小,并且全局狀態(tài)比較少,那使用VueX來實現(xiàn)該功能,并沒有發(fā)揮出VueX的威力。
  • 使用B來做中轉站,當A組件需要把信息傳給C組件時,B接受A組件的信息,然后利用屬性傳給C組件, 這是一種解決方案,但是如果嵌套的組件過多,會導致代碼繁瑣,代碼維護比較困難;如果C中狀態(tài)的改變需要傳遞給A, 使用事件系統(tǒng)一級級往上傳遞 。
  • 自定義一個Vue 中央數(shù)據(jù)總線,這個情況適合碰到組件跨級傳遞消息,但是缺點是 碰到多人合作時,代碼的維護性較低,代碼可讀性低

一、文檔描述

(1)$props:當前組件接收到的 props 對象。Vue 實例代理了對其 props 對象屬性的訪問。

(2)$attrs:包含了父作用域中不作為 prop 被識別 (且獲取) 的特性綁定 (class 和 style 除外)。

(3)$listeners:包含了父作用域中(不含 .native 修飾器的)v-on事件監(jiān)聽器。他可以通過 v-on="listeners"傳入內部組件

二、具體使用

1、父組件

<template>
  <div>
    <div>父親組件</div>
    <Child
      :foo="foo"
      :zoo="zoo"
      @handle="handleFun"
    >
    </Child>
  </div>
</template>

<script>
import Child from './Child.vue'
export default {
  components: { Child },
  data() {
    return {
      foo: 'foo',
      zoo: 'zoo'
    }
  },
  methods: {
    // 傳遞事件
    handleFun(value) {
      this.zoo = value
      console.log('孫子組件發(fā)生了點擊事件,我收到了')
    }
  }
}
</script>

2. 兒子組件(Child.vue)

中間層,作為父組件和孫子組件的傳遞中介,在兒子組件中給孫子組件添加v-bind="$attrs",這樣孫子組件才能接收到數(shù)據(jù)。

$attrs是從父組件傳過來的,且兒子組件未通過props接收的數(shù)據(jù),例如zoo

<template>
  <div class='child-view'>
    <p>兒子組件--{{$props.foo}}與{{foo}}內容一樣</p>
    <GrandChild v-bind="$attrs" v-on="$listeners"></GrandChild>
  </div>
</template>

<script>
import GrandChild from './GrandChild.vue'
export default {
  // 繼承所有父組件的內容
  inheritAttrs: true,
  components: { GrandChild },
  props: ['foo'],
  data() {
    return {
    }
  }
}
</script>

3. 孫子組件(GrandChild.vue)

在孫子組件中一定要使用props接收從父組件傳遞過來的數(shù)據(jù)

<template>
  <div class='grand-child-view'>
    <p>孫子組件</p>
    <p>傳給孫子組件的數(shù)據(jù):{{zoo}}</p>
    <button @click="testFun">點我觸發(fā)事件</button>
  </div>
</template>

<script>
export default {
  // 不想繼承所有父組件的內容,同時也不在組件根元素dom上顯示屬性
  inheritAttrs: false,
  // 在本組件中需要接收從父組件傳遞過來的數(shù)據(jù),注意props里的參數(shù)名稱不能改變,必須和父組件傳遞過來的是一樣的
  props: ['zoo'],
  methods: {
    testFun() {
      this.$emit('handle', '123')
    }
  }
}
</script>

三、總結

從上面的代碼,可以看出使用attrs、inheritAttrs屬性 能夠使用簡潔的代碼,將A組件的數(shù)據(jù)傳遞給C組件,該場景的使用范圍還是挺廣的。

通過listeners,我們在b組件上 綁定 v-on=”$listeners”, 在a組件中,監(jiān)聽c組件觸發(fā)的事件。就能把c組件發(fā)出的數(shù)據(jù),傳遞給a組件。

到此這篇關于詳解Vue中$props、$attrs和$listeners的使用方法的文章就介紹到這了,更多相關Vue $props、$attrs和$listeners內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue3.2單文件組件setup的語法糖與新特性總結

    Vue3.2單文件組件setup的語法糖與新特性總結

    ue3上線已經(jīng)很久了,許多小伙伴應該都已經(jīng)使用過vue3了,下面這篇文章主要給大家介紹了關于Vue3.2單文件組件setup的語法糖與新特性總結的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • vue單個組件實現(xiàn)無限層級多選菜單功能

    vue單個組件實現(xiàn)無限層級多選菜單功能

    這篇文章主要介紹了vue單個組件實現(xiàn)無限層級多選菜單的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-04-04
  • ?用Vue?Demi?構建同時兼容Vue2與Vue3組件庫

    ?用Vue?Demi?構建同時兼容Vue2與Vue3組件庫

    這篇文章主要介紹了?用Vue?Demi?構建同時兼容Vue2與Vue3組件庫,我們通過考慮其功能、工作原理以及如何開始使用它來了解?Vue?Demi,下面我們一起進入文章學起來吧
    2022-02-02
  • Vue2如何支持composition API示例詳解

    Vue2如何支持composition API示例詳解

    這篇文章主要為大家介紹了Vue2如何支持composition API示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • VUE預渲染及遇到的坑

    VUE預渲染及遇到的坑

    這篇文章主要介紹了VUE預渲染及遇到的坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • vue實現(xiàn)excel文件的導入和讀取完整步驟

    vue實現(xiàn)excel文件的導入和讀取完整步驟

    Vue的數(shù)據(jù)綁定功能非常強大,很適合用來讀取Excel內容,這篇文章主要給大家介紹了關于vue實現(xiàn)excel文件的導入和讀取的相關資料,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • 詳解Vue-cli中的靜態(tài)資源管理(src/assets和static/的區(qū)別)

    詳解Vue-cli中的靜態(tài)資源管理(src/assets和static/的區(qū)別)

    這篇文章主要介紹了Vue-cli中的靜態(tài)資源管理(src/assets和static/的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 使用Vue開發(fā)一個實時性時間轉換指令

    使用Vue開發(fā)一個實時性時間轉換指令

    我們就來實現(xiàn)這樣一個Vue自定義指令v-time,將表達式傳入的時間戳實時轉換為相對時間。下面小編給大家?guī)砹耸褂肰ue開發(fā)一個實時性時間轉換指令,需要的朋友參考下吧
    2018-01-01
  • 詳解Element-UI中上傳的文件前端處理

    詳解Element-UI中上傳的文件前端處理

    這篇文章主要介紹了詳解Element-UI中上傳的文件前端處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 詳解Vue3?中的watchEffect?特性

    詳解Vue3?中的watchEffect?特性

    這篇文章主要介紹了Vue3?中的?watchEffect?特性詳解,watchEffect?是?Vue3?中非常有用的一個特性,它可以讓我們輕松地監(jiān)聽響應式數(shù)據(jù)的變化,并在數(shù)據(jù)發(fā)生變化時執(zhí)行指定的回調函數(shù),從而簡化代碼并提高應用的性能,需要的朋友可以參考下
    2023-04-04

最新評論