精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

中文字幕一区二区人妻电影丶| 精品人妻人人做人人爽| 中文字幕在线播放日韩| 午夜影院欧美| 精品久久国产97色综合| 国产特级黄色大片| 国产精品无码2021在线观看| 久久国产精品免费| 午夜剧场成人观在线视频免费观看| 国产精品300页| 亚洲色图图片| 色综合婷婷久久| 成人午夜免费剧场| 韩国福利在线| 成人精品国产一区二区4080| 国产精品久久久久久久久久久久久久 | 日韩精品日韩在线观看| 亚洲综合婷婷久久| 伊人久久综合一区二区| 亚洲精品日韩一| 日本一区二区三区四区在线观看 | 久久久久久久久艹| 成人在线丰满少妇av| 亚洲国产成人精品电影| 加勒比av中文字幕| 国产经典一区| 日韩欧美精品网址| 2019日韩中文字幕mv| 好操啊在线观看免费视频| 国产日本欧美一区二区| 久久av免费观看| 成人毛片视频免费看| 狠狠色狠狠色综合系列| 国产精品久久在线观看| 亚洲天堂一区在线| 伊人成人网在线看| 欧美肥老妇视频| 色欲人妻综合网| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 国产肉丝袜一区二区| 国偷自产av一区二区三区小尤奈| 999国产精品视频免费| 久久精品国产久精国产| 国产精品激情自拍| 337p粉嫩色噜噜噜大肥臀| 国产精品久久久一区二区| 久久久久久亚洲精品中文字幕| 日韩一区二区不卡视频| 香蕉久久网站| 久久在线精品视频| 希岛爱理中文字幕| 亚洲精品午夜av福利久久蜜桃| 中文一区二区视频| 国产无遮挡在线观看| 精品国产一区二区三区噜噜噜 | 日韩午夜在线播放| 亚洲精品中文字幕乱码无线| 羞羞视频在线观看一区二区| 欧美日本国产视频| 黄色片免费网址| 日韩一区二区三区色| 日韩一区二区麻豆国产| 最新中文字幕日本| 精品伊人久久久| 亚洲精品一二区| 国产一区二区三区四区五区六区| 欧美日韩老妇| 久久综合九色九九| 久久久久久激情| 一本色道久久精品| 欧美在线不卡区| 欧美在线视频精品| 国产自产v一区二区三区c| 亚洲影院色在线观看免费| 亚洲乱码在线观看| 91一区二区三区在线播放| 青娱乐国产91| 黄色免费在线观看| 天天综合日日夜夜精品| 日韩欧美精品在线观看视频| 国产一区精品福利| 日韩欧美国产综合| 30一40一50老女人毛片| 久久精品一级片| 999国产精品永久免费视频app| 久久成人免费视频| 久久99精品国产99久久6尤物 | 欧美男男gaytwinkfreevideos| 国产亚洲xxx| 亚洲一级生活片| 99视频一区| 国产精品直播网红| 成人久久久精品国产乱码一区二区 | 一本大道久久a久久综合婷婷 | 91视频在线观看免费| 天堂精品一区二区三区| 好吊日av在线| 欧美性高清videossexo| 美国黄色一级视频| 日韩精品免费| 8x拔播拔播x8国产精品| 国产又粗又猛又爽又黄的| 91最新地址在线播放| 99久re热视频精品98| 不卡av播放| 精品久久久久久综合日本欧美| 精品成人无码一区二区三区| 激情六月综合| 国产在线精品成人一区二区三区| 午夜福利视频一区二区| 亚洲欧美另类小说视频| 国产又黄又猛视频| 成人在线超碰| 久久精品久久久久久国产 免费| 五月婷婷开心网| 国产成人精品亚洲日本在线桃色 | 综合久久精品| 国产精品入口福利| 日本一卡二卡四卡精品| 亚洲国产视频在线| 国产一区二区在线观看免费视频| 丝袜av一区| 久久久久久国产精品久久| 一区二区国产欧美| 欧美韩国日本一区| 精品视频一区二区在线| 久久夜色精品国产噜噜av小说| 欧美成人精品不卡视频在线观看| 精品国产青草久久久久96| 久久综合久久综合久久综合| 成人免费性视频| 国产一区二区三区免费观看在线| 这里只有精品丝袜| 国产字幕在线观看| 久久久亚洲精品石原莉奈| 国产精品无码人妻一区二区在线 | 奇米影视首页 狠狠色丁香婷婷久久综合| av影视在线看| 亚洲黄色av女优在线观看| 国产精彩视频在线观看| 床上的激情91.| 日韩一级免费看| 亚洲一二av| 久久久久久久成人| 国内爆初菊对白视频| 亚洲制服丝袜在线| 中文字幕视频观看| 亚洲午夜久久久久久尤物| 99视频在线免费观看| 污污网站在线观看| 日韩免费福利电影在线观看| 久久久久97国产| 成人久久久精品乱码一区二区三区| 400部精品国偷自产在线观看| 99亚洲男女激情在线观看| 久久深夜福利免费观看| a视频免费在线观看| 亚洲最新在线观看| 国产性生活毛片| 久久精品亚洲一区二区| 少妇免费毛片久久久久久久久| 毛片免费看不卡网站| 这里精品视频免费| 国产一区二区三区中文字幕| 亚洲免费观看高清在线观看| 中文字幕在线播放一区二区| 最新日韩欧美| 欧美日韩国产综合在线| 福利一区二区| 久久偷看各类女兵18女厕嘘嘘| 不卡视频在线播放| 午夜电影网一区| 中文字幕第24页| 狠狠色丁香九九婷婷综合五月| 久久久久福利视频| 青青久久av| 国产精品一区二区久久久久| a级网站在线播放| 亚洲精品美女久久久| 最近中文字幕在线免费观看| 中文字幕一区二区三区四区| 国产吃瓜黑料一区二区| 久久国产一二区| 一道精品一区二区三区| 136国产福利精品导航网址应用| 欧美性在线视频| 在线观看国产原创自拍视频| 日韩精品一区国产麻豆| 中文字幕手机在线视频| 亚洲人成精品久久久久| 中文字幕乱码在线| 九九久久精品视频| jizzjizz国产精品喷水| 五月精品视频| 欧美精品一区二区三区在线看午夜| 精品久久在线| 欧美亚洲国产视频| 黄色成人在线| 亚洲视频在线观看免费| 精品国产va久久久久久久| 日本久久一区二区| 中文字幕第28页| 中文字幕在线观看一区二区| 亚洲成人av免费在线观看| 精品中文字幕一区二区| 黄色国产精品视频| 亚洲性视频h| 99re99热| 成人a'v在线播放| 精品一区久久久| 亚洲国产中文在线| 国产日韩综合一区二区性色av| 岛国av免费在线观看| 久久影院中文字幕| 92国产在线视频| 亚洲男人av在线| 蜜桃视频在线观看www| 欧美二区在线观看| 波多野结衣毛片| 黑人精品xxx一区| 激情综合网五月天| 亚洲婷婷综合久久一本伊一区 | ...中文天堂在线一区| 人妻一区二区视频| 久久伊99综合婷婷久久伊| 蜜臀aⅴ国产精品久久久国产老师| 蜜臀av一区二区在线观看| 成人羞羞国产免费网站| 一区二区三区精品视频在线观看| 69精品丰满人妻无码视频a片| 日韩高清欧美| 亚洲欧美影院| 日韩在线综合| 亚洲精品一区二区三区樱花| 免费欧美视频| 日韩和欧美的一区二区| 视频一区在线观看| 久久综合中文色婷婷| 精品五月天堂| 精品一区二区三区日本| 青青视频一区二区| 欧美高清性xxxxhdvideosex| 久草在线综合| 久久久久久a亚洲欧洲aⅴ| 精品五月天堂| 美女主播视频一区| 欧美女王vk| 亚洲精品国产精品国自产观看| 欧美日韩激情在线一区二区三区| 欧美最大成人综合网| 精品freesex老太交| 视频一区三区| 91综合在线| 欧美日韩dvd| 激情综合视频| 欧美在线观看成人| 老牛影视一区二区三区| 另类小说第一页| 久久超级碰视频| 久久久久亚洲av片无码v| 国产成人自拍在线| 国产毛片毛片毛片毛片毛片毛片| 91色九色蝌蚪| 亚洲ⅴ国产v天堂a无码二区| 国产精品妹子av| 亚洲熟女www一区二区三区| 亚洲亚洲精品在线观看| 久久艹免费视频| 在线观看日韩精品| 国产乱码精品一区二区| 精品第一国产综合精品aⅴ| 涩爱av在线播放一区二区| 正在播放亚洲1区| 18视频在线观看| 欧美在线一级视频| 啪啪av大全导航福利综合导航| 91香蕉电影院| 欧美一级色片| 亚洲自拍偷拍二区| 怡红院精品视频在线观看极品| 无码aⅴ精品一区二区三区浪潮 | aaa黄色大片| 国产三级精品三级| 激情综合五月网| 色妞www精品视频| 99热这里只有精品3| 亚洲精品一区二区三区婷婷月| 秋霞a级毛片在线看| 性色av香蕉一区二区| 久久免费资源| 精品999在线观看| 婷婷综合社区| 国产成人a亚洲精v品无码| 狠狠色丁香久久婷婷综| 国产精品扒开腿做爽爽| 亚洲精品视频一区| 无码人妻丰满熟妇区bbbbxxxx| 日韩欧美一二三| 国产视频第一区| 国内成人精品视频| 精品久久久网| 欧洲国产精品| 亚洲黄色高清| 三级黄色片免费看| 久久久久久久综合日本| 日本三级片在线观看| 欧美老年两性高潮| 毛片在线播放网站| 久久久亚洲福利精品午夜| 日日夜夜精品| 欧日韩一区二区三区| 99在线精品免费视频九九视| 性生活在线视频| 国产精品丝袜在线| 手机在线看片1024| 亚洲第一色在线| 伊人手机在线| 91美女片黄在线观| 成人三级视频| 欧美 激情 在线| 91女人视频在线观看| 精品在线视频免费观看| 欧美一区二区日韩一区二区| 91女主播在线观看| 国产成人极品视频| 视频福利一区| 美女av免费在线观看| 成人免费毛片a| 久久久久久国产精品免费播放| 91精品国产全国免费观看| h视频网站在线观看| 国产精品www| 国产精品手机在线播放 | 欧美男女交配| 久久一区二区三区av| 中文亚洲免费| 波多野结衣先锋影音| 精品国产鲁一鲁一区二区张丽| 六月丁香色婷婷| 91成人在线观看国产| 欧美激情极品| 国产无套内射久久久国产| 久久久久久久久久久黄色| 探花视频在线观看| 亚洲欧美制服中文字幕| 91久久国产综合久久91猫猫| 久久久久久国产精品mv| 亚洲欧美久久| jizz中文字幕| 9191久久久久久久久久久| 国产传媒在线播放| 国产精品一国产精品最新章节| 亚洲午夜精品久久久久久app| 在线观看亚洲免费视频| 亚洲成人在线网站| 少妇激情av一区二区| 国产精品91一区| 欧美a级成人淫片免费看| 亚洲精品成人在线播放| 亚洲免费av在线| 秋霞av鲁丝片一区二区| 97精品国产97久久久久久| 久久91精品| 亚洲av无日韩毛片久久| 亚洲一区二区三区中文字幕| 秋霞网一区二区| 日韩暖暖在线视频| 欧美成人直播| 黄色av电影网站| 日本韩国欧美一区| 黄色网在线免费观看| 国产精品我不卡| 日本成人在线一区| 曰本女人与公拘交酡| 精品一区二区三区四区在线| 日韩毛片一区| 久久精品xxx| 久久久国产精品麻豆| 91中文字幕在线播放| 欧美黄色片在线观看| 久草成人资源| 欧美一区二区三区影院| 欧美性生交大片免费| 麻豆影院在线| 免费久久久一本精品久久区| 免费欧美在线视频| 久久精品视频日本| 色琪琪综合男人的天堂aⅴ视频| 日韩三级精品| 8x8x最新地址| 亚洲成人中文在线| 黄在线免费观看| 久久久久网址| 国产麻豆精品视频| 成人公开免费视频| 欧美日本啪啪无遮挡网站| 国内精品久久久久久久影视简单| 国产成人av免费观看| 欧美三级中文字幕| 日本三级韩国三级欧美三级|