精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在 Vue 中,使用 $attrs 構建高級組件

開發 前端
對 $attrs 定義, Vue2 與 Vue3 是不一樣的,這里我們主要來介紹 Vue3 的版本:$attrs 對象包含了除組件所聲明的 props 和 emits 之外的所有其他 attribute,例如 class,style,v-on 監聽器等等。

這節課,我們來看下 Vue3 中的 $attrs 屬性。首先,我們會介紹它的用途以及它的實現與 Vue2 有哪些不兩同點,并通過事例來加深對它的理解。

真正理解了 $attrs 屬性有助于我們構建易于使用和可擴展的高級組件

什么是 $attrs

對 $attrs 定義, Vue2 與 Vue3 是不一樣的,這里我們主要來介紹 Vue3 的版本:

$attrs 對象包含了除組件所聲明的 props 和 emits 之外的所有其他 attribute,例如 class,style,v-on 監聽器等等。

$attrs 也可以被看作是一個安全網,它可以捕獲任何我們沒有在組件中聲明的東西。我們考慮一個只有一個屬性和事件處理程序的組件,如下所示:

<template>
<h1 @click="$emit('custom', '改變標題')">{{ title }}</h1>
</template>
<script>
export default {
name: 'Example',
props: ['title'],
emits: ['custom'],
}
</script>

如果在父組件中像下面這樣實例化上面的組件:

<template>
<div id="app">
<SimpleEvent
id="myId"
class="myClass"
data-cy="cypress-testing"
@blur="onBlur"
title="測試$attrs"
description="沒有聲明 props"
@custom="onCustom"
/>
</div>
</template>

<script setup>
import SimpleEvent from './components/Button.vue'

const onBlur = () => {
// todo
}
const onCustom = () => {
// todo
}

</script>

如果在組件中把 $attrs 打印出來,我們會得到如下內容:

{
id: 'myId',
class: 'myClass',
'data-cy': 'cypress-testing',
description: '沒有聲明 props',
onBlur: () => { // todo }
}

上面這些信息,感覺沒啥用,其實不然,我們下面會介紹如何利用這些信息。

attrs V3 vs $attrs V2

這小節,我們來看下 Vue2 與 Vue3 中的 attrs 屬性的區別,先來看張圖:

圖片

與 Vue2 的區別主要有:

  • 自定義事件放在@listerner 對象中
  • 不包含class 屬性

而 Vue3 中的 attrs 對象包含了除組件所聲明的 props 和 emits 之外的所有其他 attribute,這有利于我們方便使用這些屬性。

下面我們來看些事例。

事例

事例地址:https://stackblitz.com/edit/vue-slider-listener-example?file=src/components/Slider.vue

首先我們創建一個 Slider 組件,內容如下所示:

<template>
<input
type="range"
:value="modelValue"
@input="$emit('update:modelValue', $event.target.value)"
class="slider__input" />
</template>

<script>
export default {
name: "Slider-1",
props: {
modelValue: [Number, String],
}
};
</script>
<style lang="scss">
// 這里省略一堆樣式,自行看事例
</style>

上面代碼我們創建一個 slider,還實現了一個雙向綁定。然后可以像下面這樣使用該組件:

<Slider-1 v-model="value" />

圖片

添加一些屬性

目前我們的 Slier 組件還很簡單,不太符合實際情況。所以,我們添加幾個屬性(min, max, class, id, data-cy, @keydown 和 aria-label)。

<Slider-1
v-model="value"
min="0"
max="50"
class="blue_slider"
id="special_id"
data-cy="cypress-slider"
@keydown="() => true"
aria-label="Example slider"
/>

運行后,通過控制檢查元素,我們可以看下,我們新加的屬性都被添加到了 HTML 元素上了:

圖片

看到這里,大家可能有疑問了,既然所有的 "非屬性/事件" 屬性都已經自動應用于內部的HTML元素,為什么還要對 $attrs 做這么大的介紹?

添加標題和值

新增需求:作為一個滑塊的使用者,用戶希望能夠看到一個標題,以及它在屏幕上顯示的數字形式的值。

我們在調整一下 Slider 組件,內容如下:

// Slider-2.vue

<template>
<div class="slider">
<h1>{{ title }}</h1>
<input
type="range"
:value="modelValue"
@input="$emit('update:modelValue', $event.target.value)"
class="slider__input" />
<div>Value: {{ value }}</div>
</div>
</template>

<script>
export default {
name: "Slider-2",
props: {
modelValue: [Number, String]
title: [String],
value: [Number, String],
}
};
</script>

圖片

乍一看,好像沒啥問題,但如果我們仔細觀察,可以看到有些東西是不對的。

首先,Slider 不是藍色的。第二,value 遠遠超過了50,最后,檢查一下HTML,會看到我們所有的額外屬性(min, max, data-cy)都被分配給了根元素,而不是我們的 input 元素。

解決上述問題的最好方法是找到一種方法,將所有的屬性、類、參數和事件直接 "應用" 到 input  字段上,而不需我們手動的一個個聲明。這就是 $attrs 出場的地方。

$attrs 救場

在本文的開頭,我們介紹了 $attrs。它是一個存放所有 "未聲明"的屬性和事件的地方,而這正是我們需要解決的問題。

要使用這個功能,我們只需將 $attrs 屬性應用于一個或多個HTML元素,使用 v-bind 操作符。

<template>
<div class="slider">
<h1>{{ title }}</h1>
<input
type="range"
v-bind="$attrs"
:value="modelValue"
@input="$emit('update:modelValue', $event.target.value)"
class="slider__input" />
<div>Value: {{ modelValue }}</div>
</div>
</template>

在組件中,我們使用 attrs 充當橋梁,將所有的屬性(類、屬性、屬性和自定義事件)復制到一個或多個元素上。Slider 組件又回到了正常模式上了。

圖片

還有一個問題--我們添加的屬性不僅被分配給了 input 元素上,也分配給了 root元素。

通常情況下,這可能對界面沒啥影響,但有的屬性確實會生產一些副作用,下面,我們來解決這個問題。

inheritAttrs: false

默認情況下,任何被傳遞給組件的額外參數都會自動應用于根元素(以及所有有 $attrs 綁定的元素)。

為了關閉這個功能,并控制哪些元素可接受這個額外的屬性,我們可以使用一個名為 inheritAttrs 的標志,并將其設置為false。

經過這樣的改變,我們的HTML就變得漂亮且干凈了。所有的額外屬性都只作用于 input 元素。

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2022-02-08 15:55:00

Vue組件庫Vue Demi

2020-03-25 18:23:07

Vue2Vue3組件

2019-05-20 15:08:07

PythonPyPI庫attrs

2020-02-21 11:08:24

瀏覽器HTML設計

2022-08-11 11:35:43

Vuev-model?表單

2023-04-26 15:17:33

Vue 3開發前端

2023-07-28 13:55:40

便捷選項組件

2022-11-14 11:41:13

SVG開發組件

2023-11-03 13:20:13

Kubernetes

2021-08-01 07:58:58

Vue 加載組件

2022-05-23 13:50:20

開發封裝

2022-11-01 11:55:27

ReactVue3

2024-11-15 10:03:43

應用模板Vue

2024-01-15 06:11:13

Go構建器模式開發

2016-09-19 21:37:58

vue特效組件Web

2025-09-01 07:22:10

inferTypeScripfetch

2020-11-06 07:30:36

JS文件

2009-06-18 09:42:52

SpringXFire構建Web

2010-06-29 12:33:58

VoIP協議

2009-04-03 13:09:12

Windows Emb
點贊
收藏

51CTO技術棧公眾號

欧美日韩理论| 成人啊v在线| 99精品国产91久久久久久| 2019中文字幕在线观看| 欧美午夜激情影院| 日韩精品一区二区三区中文在线| 精品久久久久久国产| 天堂√在线观看一区二区| 一级久久久久久久| 亚洲专区免费| 欧美老少配视频| 手机免费看av| 最新精品在线| 欧美视频一区二区三区四区 | 九九热免费在线观看| 黄页网站在线| 国产精品国产三级国产a| 国产欧美欧洲| 国产欧美久久久精品免费| 欧美一级网站| 欧美国产在线视频| 亚洲天堂精品一区| 亚洲人视频在线观看| 男女男精品网站| 午夜精品久久久久久久久久久久 | 午夜精品网站| 亚洲天堂网在线观看| 97精品人人妻人人| 国产精品亚洲四区在线观看| 91久久久免费一区二区| 欧美,日韩,国产在线| 成人免费网址| 国产精品久久久一区麻豆最新章节| 精品国产免费人成电影在线观...| 国产乱码久久久| 麻豆精品一二三| 国产精品成人aaaaa网站| 国产 欧美 日韩 在线| 欧美福利专区| 免费91麻豆精品国产自产在线观看| 色欲AV无码精品一区二区久久| 欧美人体视频| 日韩电影在线观看中文字幕| 婷婷五月精品中文字幕| 中文在线综合| 精品免费国产二区三区| 一起草最新网址| 57pao成人永久免费| 欧美日韩精品一二三区| 国产九九在线观看| 亚洲福利影视| 欧美福利电影网| 国产福利精品一区二区三区| 欧洲美女精品免费观看视频| 欧美日韩一区二区在线观看| 日韩成人精品视频在线观看| 亚洲男女网站| 日韩视频在线永久播放| 激情av中文字幕| 久久超级碰碰| 亚洲欧美国产va在线影院| 三上悠亚ssⅰn939无码播放| 盗摄精品av一区二区三区| 国产精品99久久免费| 日韩欧美精品中文字幕| 高清在线观看免费| 蜜桃av在线播放| 欧美午夜精品伦理| av视屏在线播放| 国产福利亚洲| 在线播放一区二区三区| 色婷婷一区二区三区av免费看| 四虎影视精品永久在线观看| 91精品欧美一区二区三区综合在| 欧美午夜精品理论片| 欧美国产亚洲精品| 亚洲国产精品大全| 法国伦理少妇愉情| 日韩欧美电影| 欧美精品成人在线| 免费视频久久久| 久久国产精品99精品国产| 99re在线国产| 邻家有女韩剧在线观看国语| 国产精品久久久久久久久免费相片 | 亚洲欧洲日韩精品| 亚洲AV无码久久精品国产一区| 成人激情久久| 欧美不卡一区二区| 魔女鞋交玉足榨精调教| 亚洲卡一卡二卡三| 韩国av一区二区三区四区| 不卡一区二区三区视频| 久久精品蜜桃| 亚洲精品日韩综合观看成人91| 免费 成 人 黄 色| 成人在线黄色| 精品成a人在线观看| 国产av自拍一区| 自拍欧美日韩| 日韩美女在线观看一区| www国产一区| 国产农村妇女毛片精品久久麻豆 | www.男人天堂| 色琪琪久久se色| 97在线观看视频| 国产理论视频在线观看| 久久久一区二区三区| 2022中文字幕| 自拍偷自拍亚洲精品被多人伦好爽| 91精品国产综合久久久久久漫画| 天天插天天射天天干| 99精品美女| 日本不卡免费高清视频| 亚洲av无码乱码在线观看性色 | 日韩精品福利网站| 日韩在线一卡二卡| 免费欧美日韩| 国产传媒一区二区| 欧美jizzhd欧美| 色综合久久88色综合天天| 亚洲精品一区二区18漫画| 成人看的羞羞网站| 欧洲精品毛片网站| 视频一区二区免费| 夜夜嗨av一区二区三区中文字幕| 欧美成年人视频在线观看| 亚洲欧洲色图| 亚洲18私人小影院| 国产 欧美 精品| 成人欧美一区二区三区1314| 国产aaa一级片| 欧美顶级毛片在线播放| 欧美激情极品视频| 超碰在线播放97| 亚洲欧美成人一区二区三区| 亚洲国产日韩欧美在线观看| 免费国产自久久久久三四区久久| 97精品免费视频| 韩国av免费在线| 一区二区激情小说| 极品人妻一区二区| 欧美激情在线| 岛国视频一区| wwww亚洲| 亚洲精品福利视频| 亚洲一区欧美在线| 91视频观看免费| 亚洲中文字幕无码中文字| 欧美wwwwww| 欧美亚洲国产日本| 免费在线黄色网址| 欧美日韩一区二区精品| 中文字幕一区二区人妻在线不卡| 中文亚洲字幕| 欧美日韩一区二区视频在线 | 91国在线观看| 91在线无精精品白丝| 日韩国产精品久久| 亚洲欧美一区二区原创| 精品国产黄a∨片高清在线| 色婷婷**av毛片一区| 97人妻一区二区精品免费视频| 国产精品的网站| 小日子的在线观看免费第8集| 欧美女人交a| 国产有色视频色综合| 筱崎爱全乳无删减在线观看| 亚洲人a成www在线影院| 伊人成人在线观看| 伊人性伊人情综合网| 亚洲一区二区在线免费| 麻豆精品91| 亚洲免费久久| 亚洲日本视频在线| 欧美一级大胆视频| 91亚洲精选| 日韩亚洲电影在线| 亚洲三级av在线| 亚洲色图都市激情| 欧美一区二区三区成人片在线| 国产精品不卡在线观看| 中文字幕av一区二区三区人妻少妇| 成人影视亚洲图片在线| 91精品视频免费观看| 久久不射影院| 国产一区二区三区在线观看视频| 91国内精品久久久| 亚洲精品国产精华液| 国产乱了高清露脸对白| 久久精品国产一区二区三区免费看 | 午夜精品蜜臀一区二区三区免费| 精品视频一二区| 日韩欧美国产一区二区三区| 亚洲精品男人的天堂| 亚洲同性gay激情无套| 欧洲一级黄色片| 国产乱国产乱300精品| 欧美网站免费观看| 亚洲成av人电影| 欧美日韩在线观看一区二区三区| 国产精品一区二区精品| 日本欧美中文字幕| 青春草在线免费视频| 在线视频中文亚洲| 午夜小视频在线播放| 欧美日韩国产在线观看| 天堂网中文字幕| 亚洲电影第三页| 亚洲精品卡一卡二| 国产欧美一区二区在线观看| 最新版天堂资源在线| 久久国产福利国产秒拍| 欧美日韩亚洲一| 激情一区二区| 中文字幕日韩一区二区三区| 欧美精品一区二区久久| 久久国产精品-国产精品| 日本少妇精品亚洲第一区| 国产精品极品尤物在线观看| 免费h在线看| 欧美激情区在线播放| 日本天堂在线观看| 亚洲人成网站色ww在线| 日本黄在线观看| 亚洲国产精品系列| 亚洲欧美高清视频| 精品毛片乱码1区2区3区| 国产欧美一级片| 在线电影欧美成精品| 久久久999久久久| 在线影视一区二区三区| 国产性猛交╳xxx乱大交| 婷婷夜色潮精品综合在线| 国产一级性生活| 亚洲自拍偷拍图区| 精品99久久久久成人网站免费 | 精品久久久久久无码中文野结衣| 久久精品亚洲人成影院| 亚洲一区高清| 97精品国产| 亚洲电影二区| 亚洲电影一级黄| 久草视频免费在线| 亚洲天堂中文字幕| 国产精品美女高潮无套| 久久一区二区视频| 在线免费观看黄色小视频| 白白色 亚洲乱淫| 亚洲一二三四五| 成人性生交大片免费看视频在线 | 在线天堂中文资源最新版| 欧美极品少妇xxxxx| 精品精品导航| 欧美激情视频免费观看| 国产精品蜜臀| 91国自产精品中文字幕亚洲| 免费高潮视频95在线观看网站| 18性欧美xxxⅹ性满足| 欧美a级在线观看| 人人澡人人澡人人看欧美| 666av成人影院在线观看| 国产精品白嫩初高中害羞小美女| 激情久久99| 97视频热人人精品| 岛国精品一区| 日本精品一区二区三区高清 久久| 国产亚洲欧美日韩在线观看一区二区 | 日韩欧美天堂| 五月天国产一区| 国产精品99视频| 欧美国产综合在线| 久久成人国产| 亚洲综合av在线播放| 国产精品99久久久久久宅男| 制服丝袜第一页在线观看| 久久精品视频在线免费观看| 久久久99999| 午夜电影久久久| 久久久999久久久| 日韩欧美国产三级电影视频| 神马电影在线观看| 日韩中文字幕在线播放| 成年人视频免费在线播放| 国产精品扒开腿做爽爽爽男男 | 国产高清精品软男同| 欧美日韩亚洲国产精品| 国产精品igao| 国产成人精品免费视频网站| 午夜精产品一区二区在线观看的| 亚洲日本一区二区三区| 你懂的国产在线| 欧美一级高清大全免费观看| 撸视在线观看免费视频| 九九综合九九综合| 成人网ww555视频免费看| 91超碰在线电影| 国产精品一区2区3区| 国内自拍中文字幕| 日本欧美在线看| 日韩精品一区二区三区高清免费| 国产精品系列在线| 国产欧美日韩另类| 91精品国产手机| 成人亚洲综合天堂| 2019日本中文字幕| 日韩不卡在线视频| 亚洲乱码一区二区三区| 性xx色xx综合久久久xx| 美女又黄又免费的视频| 国产精品午夜在线| 综合激情网五月| 精品99久久久久久| xvideos国产在线视频| 国产精品高潮粉嫩av| 婷婷亚洲成人| 成人免费毛片在线观看| 国产精品资源在线看| 美国美女黄色片| 在线观看日韩电影| 日韩精品一二| 91精品国产乱码久久久久久久久 | 视频二区欧美毛片免费观看| 亚洲精品欧洲精品| 久久久久久久欧美精品| 波多野结衣有码| 亚洲已满18点击进入久久| 国产精品久久久久久久免费看| 亚洲跨种族黑人xxx| 国内精彩免费自拍视频在线观看网址| 999在线观看免费大全电视剧| 国产精品久久观看| 性chinese极品按摩| 国产亚洲欧美日韩俺去了| 人妻丰满熟妇av无码区| 亚洲欧美国产日韩天堂区| 三级在线观看视频| 久久国产精品久久精品国产| 亚洲高清成人| 午夜男人的天堂| 欧美日韩国产在线看| 日韩二区三区| 国产91色在线免费| 国内成人精品| 91日韩视频在线观看| 国产精品区一区二区三| 中文字幕一区二区三区四区视频 | 日本一区二区久久精品| 久久人人超碰| 亚洲精品国产91| 欧美在线观看视频一区二区三区| 久热av在线| 国产精品视频精品| 99久久婷婷国产综合精品电影√| 在线视频一二区| 亚洲综合色网站| 天天射天天色天天干| 欧美怡红院视频一区二区三区| 国产伦精品一区二区三区视频 | 大陆精大陆国产国语精品| www.av片| 久久久综合网站| 中文字幕免费在线看| 久久影院免费观看| 911精品国产| 91精品91久久久中77777老牛| 国产亚洲成aⅴ人片在线观看| 中文字幕人妻丝袜乱一区三区| 美女av一区二区| 精品素人av| 天堂社区在线视频| 亚洲欧美偷拍三级| 天天躁日日躁狠狠躁喷水| 国产精国产精品| 午夜免费一区| xxxx黄色片| 欧美日精品一区视频| 欧美人与性动交α欧美精品济南到 | 日韩一级片免费在线观看| 日本一本a高清免费不卡| 国产精品黑丝在线播放| av在线播放网址| 欧美日韩另类一区| sm在线播放| 亚洲欧美日韩国产yyy| 成人一级片网址| 中国女人一级一次看片| 国内精品免费午夜毛片| 成人激情开心网| 中文字幕99页| 欧美伊人久久大香线蕉综合69| 香蕉久久aⅴ一区二区三区| 日本一区免费观看| 国产激情视频一区二区三区欧美| 中文字幕日韩免费| 欧美激情a∨在线视频播放| 精品国产乱码久久久久久蜜坠欲下| 国产老头和老头xxxx×| 日本韩国欧美三级| av午夜在线观看|