特殊 attribute

#key

  • 預(yù)期:number | string | symbol

    key 特殊 attribute 主要用做 Vue 的虛擬 DOM 算法的提示氏身,以在比對新舊節(jié)點組時辨識 VNodes纬朝。如果不使用 key,Vue 會使用一種算法來最小化元素的移動并且盡可能嘗試就地修改/復(fù)用相同類型元素璧诵。而使用 key 時稍味,它會基于 key 的順序變化重新排列元素慨菱,并且那些使用了已經(jīng)不存在的 key 的元素將會被移除/銷毀巾腕。

    有相同父元素的子元素必須有唯一的 key同蜻。重復(fù)的 key 會造成渲染錯誤。

    最常見的用例是和 v-for 一起使用:

    <ul>
      <li v-for="item in items" :key="item.id">...</li>
    </ul>
    
    

    它也可以用于強制替換元素/組件而不是重復(fù)使用它昵时。當(dāng)你遇到如下場景時它可能會很有用:

    • 完整地觸發(fā)組件的生命周期鉤子
    • 觸發(fā)過渡

    例如:

    <transition>
      <span :key="text">{{ text }}</span>
    </transition>
    
    

    當(dāng) text 發(fā)生改變時,<span> 總是會被替換而不是被修改椒丧,因此會觸發(fā)過渡壹甥。

事件修飾符

在事件處理程序中調(diào)用 event.preventDefault() 或 event.stopPropagation() 是非常常見的需求。盡管我們可以在方法中輕松實現(xiàn)這點壶熏,但更好的方式是:方法只有純粹的數(shù)據(jù)邏輯句柠,而不是去處理 DOM 事件細(xì)節(jié)。

為了解決這個問題,Vue.js 為 v-on 提供了事件修飾符溯职。之前提過精盅,修飾符是由點開頭的指令后綴來表示的。

.stop
.prevent
.capture
.self
.once
.passive

<!-- 阻止單擊事件繼續(xù)冒泡 -->
<a @click.stop="doThis"></a>

<!-- 提交事件不再重載頁面 -->
<form @submit.prevent="onSubmit"></form>

<!-- 修飾符可以串聯(lián) -->
<a @click.stop.prevent="doThat"></a>

<!-- 只有修飾符 -->
<form @submit.prevent></form>

<!-- 添加事件監(jiān)聽器時使用事件捕獲模式 -->
<!-- 即內(nèi)部元素觸發(fā)的事件先在此處理谜酒,然后才交由內(nèi)部元素進行處理 -->
<div @click.capture="doThis">...</div>

<!-- 只當(dāng)在 event.target 是當(dāng)前元素自身時觸發(fā)處理函數(shù) -->
<!-- 即事件不是從內(nèi)部元素觸發(fā)的 -->
<div @click.self="doThat">...</div>

TIP
使用修飾符時叹俏,順序很重要;相應(yīng)的代碼會以同樣的順序產(chǎn)生僻族。因此粘驰,用 @click.prevent.self 會阻止元素本身及其子元素的點擊的默認(rèn)行為,而 @click.self.prevent 只會阻止對元素自身的點擊的默認(rèn)行為述么。

<!-- 點擊事件將只會觸發(fā)一次 -->
<a @click.once="doThis"></a>

不像其它只能對原生的 DOM 事件起作用的修飾符蝌数,.once 修飾符還能被用到自定義的組件事件上。如果你還沒有閱讀關(guān)于組件的文檔度秘,現(xiàn)在大可不必?fù)?dān)心顶伞。

Vue 還對應(yīng) addEventListener 中的 passive 選項提供了 .passive 修飾符。

<!-- 滾動事件的默認(rèn)行為 (即滾動行為) 將會立即觸發(fā)剑梳,   -->
<!-- 而不會等待 `onScroll` 完成唆貌,                    -->
<!-- 以防止其中包含 `event.preventDefault()` 的情況  -->
<div @scroll.passive="onScroll">...</div>

這個 .passive 修飾符尤其能夠提升移動端的性能。

TIP

不要把 .passive.prevent 一起使用阻荒,因為 .prevent 將會被忽略挠锥,同時瀏覽器可能會向你展示一個警告。請記住侨赡,.passive 會告訴瀏覽器你不想阻止事件的默認(rèn)行為蓖租。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市羊壹,隨后出現(xiàn)的幾起案子蓖宦,更是在濱河造成了極大的恐慌,老刑警劉巖油猫,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稠茂,死亡現(xiàn)場離奇詭異,居然都是意外死亡情妖,警方通過查閱死者的電腦和手機睬关,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毡证,“玉大人电爹,你說我怎么就攤上這事×暇Γ” “怎么了丐箩?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵摇邦,是天一觀的道長。 經(jīng)常有香客問我屎勘,道長施籍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任概漱,我火速辦了婚禮丑慎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘犀概。我一直安慰自己立哑,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布姻灶。 她就那樣靜靜地躺著铛绰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪产喉。 梳的紋絲不亂的頭發(fā)上捂掰,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音曾沈,去河邊找鬼这嚣。 笑死,一個胖子當(dāng)著我的面吹牛塞俱,可吹牛的內(nèi)容都是我干的姐帚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼障涯,長吁一口氣:“原來是場噩夢啊……” “哼罐旗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起唯蝶,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤九秀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粘我,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鼓蜒,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年征字,在試婚紗的時候發(fā)現(xiàn)自己被綠了都弹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡匙姜,死狀恐怖缔杉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搁料,我是刑警寧澤或详,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站郭计,受9級特大地震影響霸琴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昭伸,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一梧乘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧庐杨,春花似錦选调、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至填渠,卻和暖如春弦聂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氛什。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工莺葫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枪眉。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓捺檬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贸铜。 傳聞我的和親對象是個殘疾皇子堡纬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容