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

Vue.js教程之計(jì)算屬性

 更新時(shí)間:2016年11月11日 09:12:57   作者:hutou  
Vue.js 的內(nèi)聯(lián)表達(dá)式非常方便,但它最合適的使用場(chǎng)景是簡(jiǎn)單的布爾操作或字符串拼接。這篇文章給大家介紹了Vue.js教程之計(jì)算屬性,非常不錯(cuò),感興趣的的朋友一起看看吧

Vue.js 的內(nèi)聯(lián)表達(dá)式非常方便,但它最合適的使用場(chǎng)景是簡(jiǎn)單的布爾操作或字符串拼接。如果涉及更復(fù)雜的邏輯,你應(yīng)該使用計(jì)算屬性。

計(jì)算屬性是用來(lái)聲明式的描述一個(gè)值依賴了其它的值。當(dāng)你在模板里把數(shù)據(jù)綁定到一個(gè)計(jì)算屬性上時(shí),Vue 會(huì)在其依賴的任何值導(dǎo)致該計(jì)算屬性改變時(shí)更新 DOM。這個(gè)功能非常強(qiáng)大,它可以讓你的代碼更加聲明式、數(shù)據(jù)驅(qū)動(dòng)并且易于維護(hù)。

通常情況下,使用計(jì)算屬性會(huì)比使用過(guò)程式的$watch回調(diào)更合適。比如下面的例子:

<div id="demo">{{fullName}}</div>
var vm = new Vue({
data: {
firstName: 'Foo',
lastName: 'Bar',
fullName: 'Foo Bar'
}
})
vm.$watch('firstName', function (val) {
this.fullName = val + ' ' + this.lastName
})
vm.$watch('lastName', function (val) {
this.fullName = this.firstName + ' ' + val
})

上面的代碼是過(guò)程式的,并且比較笨重。對(duì)比一下計(jì)算屬性的版本:

var vm = new Vue({
el:'#demo',
data: {
firstName: 'Foo',
lastName: 'Bar'
},
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName
}
}
})

是不是感覺(jué)好多了?另外,你還可以為計(jì)算屬性提供一個(gè) setter:

computed: {
fullName: {
// getter
get: function () {
return this.firstName + ' ' + this.lastName
},
// setter
set: function (newValue) {
var names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
}

計(jì)算屬性緩存

在 0.12.8 之前,計(jì)算屬性僅僅體現(xiàn)為一個(gè)取值的行為 —— 每次你訪問(wèn)它的時(shí)候,getter 都會(huì)重新求值。在 0.12.8 中對(duì)此做了改進(jìn) —— 計(jì)算屬性的值會(huì)被緩存,只有在其某個(gè)反應(yīng)依賴改變才會(huì)重新計(jì)算。

設(shè)想我們有一個(gè)開(kāi)銷很大的計(jì)算屬性 A,它需要循環(huán)一個(gè)大數(shù)組并且完成很多運(yùn)算。并且我們還有一個(gè)依賴 A 的計(jì)算屬性。如果沒(méi)有緩存,我們對(duì) A 的 getter 不必要的過(guò)度調(diào)用就會(huì)導(dǎo)致潛在的性能問(wèn)題。而有了緩存,A 的值會(huì)被緩存起來(lái),除非其依賴發(fā)生了變化,這樣訪問(wèn)它再多次也不會(huì)導(dǎo)致大量的不必要運(yùn)算了。

然而,我們還是應(yīng)該理解什么會(huì)被視為“反應(yīng)式依賴”:

var vm = new Vue({
data: {
msg: 'hi'
},
computed: {
example: {
return Date.now() + this.msg
}
}
})

在上面的例子中,計(jì)算屬性依賴 vm.msg。因?yàn)檫@是一個(gè)在 Vue 實(shí)例中被觀察的數(shù)據(jù)屬性,那么它就被視為了一個(gè)反應(yīng)式依賴。無(wú)論何時(shí) vm.msg 改變,vm.example 的值都會(huì)被重新計(jì)算。
然而,Date.now()并不是反應(yīng)式依賴,因?yàn)樗鼪](méi)有和 Vue 的數(shù)據(jù)觀察系統(tǒng)發(fā)生任何關(guān)系。因此,當(dāng)你在程序中訪問(wèn)vm.example時(shí),你會(huì)發(fā)現(xiàn)除非vm.msg觸發(fā)了一次重新計(jì)算,否則時(shí)間戳始終是相同的值。

有的時(shí)候你需要保留簡(jiǎn)單獲取數(shù)據(jù)的模式,每次你訪問(wèn) vm.example 的時(shí)候都希望觸發(fā)重新計(jì)算。從 0.12.11 開(kāi)始,你可以為一個(gè)特殊的計(jì)算屬性開(kāi)關(guān)緩存支持:

computed: {
example: {
cache: false,
get: function () {
return Date.now() + this.msg
}
}
}

現(xiàn)在,每次你訪問(wèn) vm.example 的時(shí)候,時(shí)間戳都會(huì)及時(shí)更新。然而,要注意這只發(fā)生在 JavaScript 程序內(nèi)部訪問(wèn)的時(shí)候,數(shù)據(jù)綁定還是依賴驅(qū)動(dòng)的。當(dāng)你在模板中綁定一個(gè) {{example}} 的計(jì)算屬性時(shí),DOM 只會(huì)在反應(yīng)式依賴改變時(shí)才會(huì)更新。

以上所述是小編給大家介紹的Vue.js教程之計(jì)算屬性,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue遞歸實(shí)現(xiàn)自定義tree組件

    vue遞歸實(shí)現(xiàn)自定義tree組件

    這篇文章主要為大家詳細(xì)介紹了vue遞歸實(shí)現(xiàn)自定義tree組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue3+typeScript穿梭框的實(shí)現(xiàn)示例

    vue3+typeScript穿梭框的實(shí)現(xiàn)示例

    這篇文章主要介紹了vue3+typeScript穿梭框的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Vue自定義render統(tǒng)一項(xiàng)目組彈框功能

    Vue自定義render統(tǒng)一項(xiàng)目組彈框功能

    這篇文章主要介紹了Vue自定義render統(tǒng)一項(xiàng)目組彈框功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • vue2.0 移動(dòng)端實(shí)現(xiàn)下拉刷新和上拉加載更多的示例

    vue2.0 移動(dòng)端實(shí)現(xiàn)下拉刷新和上拉加載更多的示例

    本篇文章主要介紹vue2.0 移動(dòng)端實(shí)現(xiàn)下拉刷新和上拉加載更多的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Vue生命周期和鉤子函數(shù)的詳解與經(jīng)典面試題

    Vue生命周期和鉤子函數(shù)的詳解與經(jīng)典面試題

    Vue生命周期是指vue實(shí)例對(duì)象從創(chuàng)建之初到銷毀的過(guò)程,vue所有功能的實(shí)現(xiàn)都是圍繞其生命周期進(jìn)行的,下面這篇文章主要給大家介紹了關(guān)于Vue生命周期和鉤子函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • vue中 process.env與process.VUE_CLI_SERVICE詳解

    vue中 process.env與process.VUE_CLI_SERVICE詳解

    這篇文章主要介紹了vue中process.env與process.VUE_CLI_SERVICE的相關(guān)資料,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • vue 實(shí)現(xiàn)錨點(diǎn)功能操作

    vue 實(shí)現(xiàn)錨點(diǎn)功能操作

    這篇文章主要介紹了vue 實(shí)現(xiàn)錨點(diǎn)功能操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Vue3中provide和inject數(shù)據(jù)修改規(guī)則

    Vue3中provide和inject數(shù)據(jù)修改規(guī)則

    在Vue3中,通過(guò)inject接收到的數(shù)據(jù)是否可以直接修改,取決于provide提供的值的類型和響應(yīng)式處理方式,本文給大家介紹Vue3中provide和inject數(shù)據(jù)修改規(guī)則,感興趣的朋友一起看看吧
    2025-04-04
  • vue中this.$confirm的使用及說(shuō)明

    vue中this.$confirm的使用及說(shuō)明

    這篇文章主要介紹了vue中this.$confirm的使用及說(shuō)明方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue如何通過(guò)日期篩選數(shù)據(jù)

    vue如何通過(guò)日期篩選數(shù)據(jù)

    這篇文章主要介紹了vue如何通過(guò)日期篩選數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論

宣城市| 兴隆县| 潢川县| 枣庄市| 林周县| 阿瓦提县| 北海市| 葵青区| 阳山县| 浑源县| 湄潭县| 利辛县| 临洮县| 鄢陵县| 嵊泗县| 天祝| 库尔勒市| 莱州市| 探索| 镶黄旗| 元朗区| 东丽区| 丰都县| 长宁区| 临泉县| 宜城市| 都兰县| 睢宁县| 彩票| 蒲城县| 敦煌市| 玉田县| 陈巴尔虎旗| 新河县| 绥滨县| 买车| 日土县| 诏安县| 宝应县| 永安市| 丘北县|