欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Vue中容易被忽視的知識(shí)點(diǎn)有哪些-創(chuàng)新互聯(lián)

小編給大家分享一下Vue中容易被忽視的知識(shí)點(diǎn)有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

站在用戶的角度思考問題,與客戶深入溝通,找到溆浦網(wǎng)站設(shè)計(jì)與溆浦網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋溆浦地區(qū)。

Vue的優(yōu)點(diǎn)

Vue具體輕量級框架、簡單易學(xué)、雙向數(shù)據(jù)綁定、組件化、數(shù)據(jù)和結(jié)構(gòu)的分離、虛擬DOM、運(yùn)行速度快等優(yōu)勢,Vue中頁面使用的是局部刷新,不用每次跳轉(zhuǎn)頁面都要請求所有數(shù)據(jù)和dom,可以大大提升訪問速度和用戶體驗(yàn)。

容易忽視的點(diǎn)

箭頭函數(shù)的使用

ES6的普及使得箭頭函數(shù)的使用更加頻繁,但是在Vue中不要在選項(xiàng)屬性或者回調(diào)上使用箭頭函數(shù),舉個(gè)例子:

new Vue({
 el: '#app',
 data: {
  show: true
 },
 created: () => {
  console.log(this.show)
 },
})

將created鉤子寫成箭頭函數(shù),這里的this將不再指向Vue對象,在瀏覽器中將會(huì)指向window對象,這是因?yàn)榧^函數(shù)并沒有this,this會(huì)作為變量一直向上級詞法作用域查找,直到找到為止

指令動(dòng)態(tài)參數(shù)

Vue從2.6.0開始,可以用方括號(hào)括起來的JavaScript表達(dá)式作為一個(gè)指令參數(shù),舉個(gè)例子:

<div id="app">
 <input v-on:[event] = "doSomething">
 <button v-on:click="event = 'focus'">change</button>
</div>
new Vue({
 el: '#app',
 data() {
  return {
   event: 'input'
  }
 },
 methods: {
  doSomething () {
   console.log('sss')
  }
 },
})

這里將input的事件監(jiān)聽設(shè)置為一個(gè)動(dòng)態(tài)的參數(shù)event,默認(rèn)是監(jiān)聽點(diǎn)擊事件,當(dāng)點(diǎn)擊change的時(shí)候,改為監(jiān)聽focus事件,動(dòng)態(tài)參數(shù)預(yù)期會(huì)求出一個(gè)字符串,異常情況下值為null,null值可以用于移除綁定,任何其他非字符串類型的值都會(huì)觸發(fā)一個(gè)警告

template中使用方法

methods中提供的方法大多數(shù)時(shí)候都是用來給其他方法調(diào)用的,但是它其實(shí)也可以像computed計(jì)算屬性一樣直接寫在模版里,舉個(gè)例子:

<div id="app">{{reversedMessage('hello')}}</div>
var app = new Vue({
 el: '#app',
 methods: {
  reversedMessage: function (message) {
   return message.split('').reverse().join('')
  }
 },
})

有了computed計(jì)算屬性,為什么還要用methods呢?計(jì)算屬性是基于響應(yīng)式依賴進(jìn)行緩存的,只在相關(guān)依賴發(fā)生改變時(shí)才會(huì)重新求值,而methods每次調(diào)用都會(huì)重新計(jì)算,調(diào)用methods時(shí)可以傳參,進(jìn)行指定計(jì)算,但是computed不行,這在遍歷數(shù)組時(shí)十分有用

用key管理可復(fù)用元素

Vue會(huì)盡可能高效地渲染元素,通常會(huì)復(fù)用已有元素而不是從頭開始渲染。這么做會(huì)使 Vue變得非???,舉個(gè)例子:

<div id="app">
  <template v-if="loginType === 'username'">
   <label>Username</label>
   <input placeholder="Enter your username">
  </template>
  <template v-else>
   <label>Email</label>
   <input placeholder="Enter your email address">
  </template>
  <button @click="change">change</button>
</div>
var app = new Vue({
 el: '#app',
 data() {
  return {
   loginType: 'username'
  }
 },
 methods: {
  change () {
   this.loginType = this.loginType === 'username' ? 'email' : 'username'
  }
 }
})

上面代碼中切換loginType將不會(huì)清除用戶已經(jīng)輸入的內(nèi)容,因?yàn)閮蓚€(gè)模版使用了相同的元素,如果不想復(fù)用也很簡單,只需要添加一個(gè)具有唯一值的key屬性即可:

<template v-if="loginType === 'username'">
 <label>Username</label>
 <input key="username" placeholder="Enter your username">
</template>
<template v-else>
 <label>Email</label>
 <input key="email" placeholder="Enter your email address">
</template>
<button @click="change">change</button>

現(xiàn)在切換,每次都會(huì)重新渲染,但是label元素還是會(huì)被復(fù)用,因?yàn)樗鼪]有加唯一key值

v-if與v-for一起使用

Vue的風(fēng)格指南不推薦同時(shí)使用v-if與v-for,當(dāng)項(xiàng)目中的eslint繼承了@vue/standard時(shí),同時(shí)使用就會(huì)編譯報(bào)錯(cuò),但是可以通過在模版上加<!-- eslint-disable -->進(jìn)行忽略,同時(shí)當(dāng)它們處于同一節(jié)點(diǎn),v-for的優(yōu)先級比v-if更高,這意味著v-if 將分別重復(fù)運(yùn)行于每個(gè)v-for循環(huán)中

對象變更檢測

在Vue中對于已經(jīng)創(chuàng)建的實(shí)例,不允許動(dòng)態(tài)添加根級別的響應(yīng)式屬性,但是我們知道可以通過Vue.set(object, propertyName, value)方法向嵌套對象添加響應(yīng)式屬性,那如果需要為已有對象賦值多個(gè)新屬性呢?舉個(gè)例子:

<div id="app">{{user.name}}-{{user.age}}-{{user.sex}}</div>
var app = new Vue({
 el: '#app',
 data() {
  return {
   user: {
    name: 'xxx'
   }
  }
 },
 created() {
  this.user = Object.assign({}, this.user, {
   age: 18,
   sex: 'name'
  })
 },
})

可以用Object.assign為這個(gè)對象重新賦值,這樣就能添加多個(gè)新的響應(yīng)式屬性

內(nèi)聯(lián)方法訪問原始DOM事件

有時(shí)在模版中調(diào)用方法時(shí),我們需要向方法中傳參數(shù),但是同時(shí)又要傳遞原始的DOM事件,怎么處理呢?舉個(gè)例子:

<div id="app">
 <button @click="share('share info', $event)">share</button>
</div>
var app = new Vue({
 el: '#app',
 data() {
  return {
   user: {
    name: 'xxx'
   }
  }
 },
 methods: {
  share (info, event) {
   console.log(info, event)
  }
 },
})

如例子所示,可以用特殊變量$event把它傳入方法

once、passive事件修飾符

Vue中提供了多個(gè)事件修飾符, once、passive是后面新增的兩個(gè),once用于限定事件只觸發(fā)一次,passive用于修飾的事件發(fā)生后立即觸發(fā),用于提升移動(dòng)端性能

表單輸入修飾符

.lazy

在默認(rèn)情況下,v-model在每次input事件觸發(fā)后將輸入框的值與數(shù)據(jù)進(jìn)行同步,可以添加lazy修飾符,從而轉(zhuǎn)變?yōu)槭褂胏hange事件進(jìn)行同步,舉個(gè)例子:

<input placeholder="lazy" v-model.lazy="msg" @input="input" @change="change">

.number

如果想自動(dòng)將用戶的輸入值轉(zhuǎn)為數(shù)值類型,可以給v-model添加number修飾符,這通常很有用,因?yàn)榧词乖趖ype="number"時(shí),HTML輸入元素的值也總會(huì)返回字符串。如果這個(gè)值無法被 parseFloat()解析,則會(huì)返回原始的值,舉個(gè)例子:

<input placeholder="number" v-model.number="age" @input="input">

.trim

如果要自動(dòng)過濾用戶輸入的首尾空白字符,可以給v-model添加trim修飾符,舉個(gè)例子:

<input placeholder="trim" v-model.trim="trim" @input="input">

子組件替換/合并已有的特性

在Vue中對于絕大多數(shù)特性來說,從外部提供給組件的值會(huì)替換掉組件內(nèi)部設(shè)置好的值。所以如果傳入type="text"就會(huì)替換掉 type="date"并把它破壞!慶幸的是,class和 style特性會(huì)稍微智能一些,即兩邊的值會(huì)被合并起來,從而得到最終的值,舉個(gè)例子:

<div id="app">
 <base-input type="text" class="out"></base-input>
</div>
Vue.component('base-input', {
 template: `<input type="date" placeholder="replace" class="default">`
})
new Vue({
 el: '#app',
})

在上例中input的type值為date,class為deafault,在使用子組件時(shí),向子組件中傳入type="text" class="out",此時(shí)input的type值會(huì)被替換為text,class值會(huì)被合并為"default out",那么如果想要禁用屬性繼承怎么辦呢?可以在組件的選項(xiàng)中設(shè)置inheritAttrs:false,舉個(gè)例子:

Vue.component('base-input', {
 inheritAttrs: false,
 template: `<input type="date" placeholder="replace" class="default">`
})

但是inheritAttrs:false選項(xiàng)不會(huì)影響style和class的綁定,因此style和class還是會(huì)合并

.sync修飾符

在有些情況下,可能需要對一個(gè) prop進(jìn)行“雙向綁定”。不幸的是,真正的雙向綁定會(huì)帶來維護(hù)上的問題,因?yàn)樽咏M件可以修改父組件,且在父組件和子組件都沒有明顯的改動(dòng)來源,因此Vue提供了sync修飾符,舉個(gè)例子:

<div id="app">
 <span>{{title}}</span>
 <text-document v-bind:title.sync="title"></text-document>
</div>
Vue.component('text-document', {
 props: ['title'],
 template: `<button @click="change">change</button>`,
 methods: {
  change () {
   this.$emit('update:title', 'change')
  }
 },
})
new Vue({
 el: '#app',
 data() {
  return {
   title: 'default'
  }
 }
})

當(dāng)調(diào)用this.$emit('update:title', 'change'),父組件中的title就會(huì)改變

以上是“Vue中容易被忽視的知識(shí)點(diǎn)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前文章:Vue中容易被忽視的知識(shí)點(diǎn)有哪些-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article14/dpjgde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、微信公眾號(hào)、外貿(mào)建站、關(guān)鍵詞優(yōu)化、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
国产精品日韩欧美亚洲| 91色九色吧在线观看| 国产三级系列在线观看| 欧美日韩国产一下老妇| 视频一区二区三区不卡| 日韩亚洲在线中文字幕| 亚洲激情午夜福利视频| 91精品国产综合久久男男| 欧美成人高清在线播放| 国内激情自拍偷拍视频| 国产精品粗又长一区| 久久夜色噜噜噜av一区| 日本av二区三区在线| 永久免费成人在线视频| 日韩在线不卡播放视频| 日韩精品一区二区视频| 亚洲六月丁香六月婷婷| 亚洲国产av国产av| 久草视频免费福利资源站| 日本av天堂中文字幕| 亚洲欧美一区二区粉嫩| 日韩二区三区在线观看| 麻豆国产免费av在线| 久久精品人妻一区二区| 欧美精品一区二区三区在线| 久久精品国产av极品| 国产欧美日韩亚洲精品区| 97视频在线观看观看| 欧美日韩69av网| 欧美aⅴ精品一区二区三区| 国产三级伦理在线播放| 熟女肥臀一区二区三区| 久久精品国产亚洲七七| 国产自拍在线视频精品| 精品蜜桃臀91人少妇| 久久综合久中文字幕青草| 亚洲国产中日韩精品综合| 婷婷不卡中文字幕三区| 精品国产一区二区av麻豆| 久久人妻一区二区三区免费密臀| 黄片大全在线免费视频观看|