最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Vue2.4.0 $attrs與inheritAttrs的具體使用

 更新時間:2020年03月08日 10:10:57   作者:再次重逢的時間  
這篇文章主要介紹了淺談Vue2.4.0 $attrs與inheritAttrs的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

vue父子組件之間的傳值我們都知道使用props和emit,但是祖孫之間的傳值在以前,我們都需要子輩作為中間人,當(dāng)祖輩有值要傳遞給孫輩時,需要子輩作為中間人把值傳遞給孫輩,當(dāng)孫輩想要改變祖輩的值時,需要先emit子輩的方法,然后子輩再emit父輩的方法從而改變祖輩的值,如果是多級組件嵌套的話,那么祖孫輩之間傳值,就會變得非常的繁瑣,為了解決這個需求,vue2.4版本產(chǎn)生了$attrs,$listeners,inheritAttrs這三個屬性。

vm.$attrs

官方API

vm.$attrs

2.4.0 新增,類型:{ [key: string]: string },只讀

詳細(xì):

包含了父作用域中不作為 prop 被識別 (且獲取) 的特性綁定 (class 和 style 除外)。當(dāng)一個組件沒有聲明任何 prop 時,這里會包含所有父作用域的綁定 (class 和 style 除外),并且可以通過 v-bind="$attrs" 傳入內(nèi)部組件——在創(chuàng)建高級別的組件時非常有用。

使用介紹

從官方介紹我們可以得出 $attrs 應(yīng)用于父子傳值場景下,子組件通過 $attrs 可以訪問父組件傳過來的所有屬性,但需要注意的是如果父組件所傳的屬性中有在子組件 props 中有過聲明,那么該屬性不會出現(xiàn)在 $attrs 對象中。

上示例

<template>
 <div>
  <p>我是父組件</p>
  <test name="tom" :age="12" :id="12345" class="child" style="color: red" />
 </div>
</template>

<script>
export default {
 components: {
  test: {
   template: `
   <div>
    <p>我是子組件</p>
    <test2 v-bind="$attrs" s1="sss" s2="sss" />
   </div>`,
   props: ["name"],
   created() {
    console.log(this.$attrs); // {age: 12, id: 12345}
   },
   components: {
    test2: {
     template: `<p>我是孫子組件</p>`,
     props: ["age", "s1"],
     created() {
      console.log(this.$attrs); // {s2: "sss", id: 12345}
     }
    }
   }
  }
 }
};
</script>

首先可以看到父組件傳給子組件傳了 name、age、id、class、style 五個屬性,其中 name 屬性在子組件 props 中聲明,又因為 class 和 style 屬性會被 $attrs 除外,最終在子組件打印的 $attrs 輸出了 {age: 12, id: 12345}

接著,子組件把自己的 $attrs 對象傳給了孫子組件,同時又給孫子組件傳了 s1、s2 兩個屬性,孫子組件在自己的屬性 props 中聲明了 age 、s1 兩個屬性,最終打印輸出 {s2: "sss", id: 12345} 可以看到,孫子組件的 $attrs 合并了從父組件和子組件傳來的屬性,并把 props 中聲明的屬性除外

至此 $attrs 的介紹結(jié)束,下面開始介紹 inheritAttrs

inheritAttrs

官方API

inheritAttrs

2.4.0 新增,類型:boolean,默認(rèn)值:true

詳細(xì):

默認(rèn)情況下父作用域的不被認(rèn)作 props 的特性綁定 (attribute bindings) 將會“回退”且作為普通的 HTML 特性應(yīng)用在子組件的根元素上。當(dāng)撰寫包裹一個目標(biāo)元素或另一個組件的組件時,這可能不會總是符合預(yù)期行為。通過設(shè)置 inheritAttrs 到 false,這些默認(rèn)行為將會被去掉。而通過 (同樣是 2.4 新增的) 實例屬性 $attrs 可以讓這些特性生效,且可以通過 v-bind 顯性的綁定到非根元素上。

注意:這個選項不影響 class 和 style 綁定。

使用介紹

官方的解釋看上去很唬人,其實默認(rèn)情況就是把 $attrs 對象上沒在子組件 props 中聲明的屬性加在子組件的根 html 標(biāo)簽上

上示例

<template>
 <div>
  <p>我是父組件</p>
  <test name="tom" age="12" class="child" style="color: red" />
 </div>
</template>

<script>
export default {
 components: {
  test: {
   template: `<p>我是子組件</p>`,
   props: ["name"],
   inheritAttrs: true, // 默認(rèn)為 true
   created() {
    console.log(this.$attrs); // {age: "12"}
   }
  }
 }
};
</script>

可以看到父組件傳給子組件傳了 name、age 兩個屬性,其中 name 屬性在子組件 props 中聲明,以上代碼瀏覽器解析后

<div>
 <p data-v-469af010>我是父組件</p>
 <p data-v-469af010 age="12" class="child" style="color: red;">我是子組件</p>
</div>

可以看到?jīng)]有在子組件 props 中聲明的 age 屬性被寫到了標(biāo)簽里,如果你不希望這樣,則可以把子組件中的 inheritAttrs 設(shè)為 false,解析后的結(jié)果如下

<div>
 <p data-v-469af010>我是父組件</p>
 <p data-v-469af010 class="child" style="color: red;">我是子組件</p>
</div>

可以看到標(biāo)簽中的屬性消失了,同時可以看到 class、style 屬性不受影響

至此 inheritAttrs 的介紹結(jié)束

到此這篇關(guān)于淺談Vue2.4.0 $attrs與inheritAttrs的具體使用的文章就介紹到這了,更多相關(guān)Vue2.4.0 $attrs與inheritAttrs內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決webpack+Vue引入iView找不到字體文件的問題

    解決webpack+Vue引入iView找不到字體文件的問題

    今天小編就為大家分享一篇解決webpack+Vue引入iView找不到字體文件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue3 ElementUI 日期禁選當(dāng)日前當(dāng)日后三天后的實現(xiàn)代碼

    vue3 ElementUI 日期禁選當(dāng)日前當(dāng)日后三天后的實現(xiàn)代碼

    這篇文章主要介紹了vue3 ElementUI 日期禁選當(dāng)日前當(dāng)日后三天后的實現(xiàn)代碼,本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • vue中el-date-picker限制選擇7天內(nèi)&禁止內(nèi)框選擇

    vue中el-date-picker限制選擇7天內(nèi)&禁止內(nèi)框選擇

    項目中需要選擇時間范圍,并且只能選擇當(dāng)前日期之后的七天,本文就來介紹了vue中el-date-picker限制選擇7天內(nèi)&禁止內(nèi)框選擇,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • element-ui?el-upload實現(xiàn)上傳文件及簡單的上傳文件格式驗證功能

    element-ui?el-upload實現(xiàn)上傳文件及簡單的上傳文件格式驗證功能

    前端上傳文件后,后端接受文件進行處理后直接返回處理后的文件,前端直接再將文件下載下來,下面這篇文章主要給大家介紹了關(guān)于element-ui?el-upload實現(xiàn)上傳文件及簡單的上傳文件格式驗證功能的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 創(chuàng)建nuxt.js項目流程圖解

    創(chuàng)建nuxt.js項目流程圖解

    Nuxt.js是創(chuàng)建Universal Vue.js應(yīng)用程序的框架。它的主要范圍是UI渲染,同時抽象出客戶端/服務(wù)器分布。我們的目標(biāo)是創(chuàng)建一個足夠靈活的框架,以便您可以將其用作主項目庫或基于Node.js的當(dāng)前項目。
    2020-03-03
  • Vue中ref和$refs的介紹以及使用方法示例

    Vue中ref和$refs的介紹以及使用方法示例

    這篇文章主要給大家介紹了關(guān)于Vue中ref和$refs使用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • vue axios 簡單封裝以及思考

    vue axios 簡單封裝以及思考

    axios 是一個基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端。這篇文章主要介紹了vue axios 簡單封裝以及思考 ,需要的朋友可以參考下
    2018-10-10
  • Vue項目中實現(xiàn)描點跳轉(zhuǎn)scrollIntoView的案例

    Vue項目中實現(xiàn)描點跳轉(zhuǎn)scrollIntoView的案例

    這篇文章主要介紹了Vue項目中實現(xiàn)描點跳轉(zhuǎn)scrollIntoView的案例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue 路由切換時頁面內(nèi)容沒有重新加載的解決方法

    Vue 路由切換時頁面內(nèi)容沒有重新加載的解決方法

    今天小編就為大家分享一篇Vue 路由切換時頁面內(nèi)容沒有重新加載的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue3 組件的開發(fā)詳情

    Vue3 組件的開發(fā)詳情

    這篇文章主要介紹了Vue3組件的開發(fā),上一篇文章我們價紹了Vue3(三)網(wǎng)站首頁布局開發(fā),今天繼續(xù)上篇內(nèi)容展開組件的開發(fā),需要的朋友可以參考一下
    2021-11-11

最新評論

金华市| 兴化市| 五常市| 葵青区| 肇庆市| 恭城| 元谋县| 平湖市| 宝清县| 黎川县| 阿城市| 于田县| 三原县| 青田县| 金坛市| 阿荣旗| 罗甸县| 修水县| 余庆县| 临高县| 多伦县| 华亭县| 峨山| 淄博市| 廊坊市| 简阳市| 长子县| 华池县| 益阳市| 区。| 黄浦区| 昌平区| 宜阳县| 南召县| 阿拉尔市| 遂昌县| 商城县| 敖汉旗| 阜城县| 大田县| 宁安市|