老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Vue.js計算屬性computed-創新互聯

計算屬性

10余年的城東網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網站建設的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整城東建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯從事“城東網站設計”,“城東網站推廣”以來,每個客戶項目都認真落實執行。

通常我們會在模板中綁定表達式,模板是用來描述視圖結構的。如果模板中的表達式存在過多的邏輯,模板會變得臃腫不堪,維護變得非常困難。因此,為了簡化邏輯,當某個屬性的值依賴于其他屬性的值時,我們可以使用計算屬性。


    {{ message.split('').reverse().join('') }}

在這種情況下,模板不再簡單和清晰。在實現反向顯示 message 之前,你應該確認它。這個問題在你不止一次反向顯示 message 的時候變得更加糟糕。

1、什么是計算屬性

計算屬性就是當其依賴屬性的值發生變化時,這個屬性的值會自動更新,與之相關的DOM部分也會同步自動更新。


    
    
    
    didi=`didi`, family=`family`, didiFamily=`didiFamily`

當vm.didi和vm.family的值發生了變化時,vm.didiFamily的值會自動更新,并且會自動同步更新DOM部分

Vue.js  計算屬性computed

前面實例只提供了getter,實際上除了getter,我們還可以設置計算屬性的setter。


    
    
    
    
    didi=`didi`, family=`family`, didiFamily=`didiFamily`

當設置vm.didiFamily的值時,vm.didi和vm.family的值也會自動更新

Vue.js  計算屬性computed

如果還不是很理解上面這段內容的意思,那我們可以看一個簡單一點的例子:


    a=>`a`
    
    b=>`b`

盡管data 里面沒有聲明屬性 b,但是我們通過computed 返回了一個屬性b,并返回了一個b的屬性值2,查看頁面效果截圖:

Vue.js  計算屬性computed

此時,我們可以在控制臺通過給 屬性a 重新賦值,并將新的賦值渲染到HTML頁面上

Vue.js  計算屬性computed

a的值變成了30,但是b 的值還是2,沒有發生任何變化,我們也可以把屬性a 和 屬性b 關聯起來:


    a => `a`
    
    b => `b`

點擊頁面以后,屬性a 重新賦值為100,屬性b 變成了101

Vue.js  計算屬性computed

如果反過來,我們想通過b 來改變a,可以嗎?不妨在原代碼的基礎上試一試:

Vue.js  計算屬性computed

當重新給b 賦值時,頁面中的a 和 b 都沒有發生任何變化。我們剛剛說到,computed里面的 b默認調用的是 getter,其實,還有一個setter。

示例代碼:


    a => `a`
    
    b => `b`

從代碼中可以看到,屬性b 接受的值是在 a 的基礎上加1,屬性b 設置的值是直接賦給a 的。所以重新給b賦值為300時,是把a 變成了300,b在a的基礎上加1

Vue.js  計算屬性computed

再來看一個官方提供的例子:


    

Original message: "`message`"

    

Computed reversed message: "`reversedMessage`"

Vue.js  計算屬性computed

這里我們聲明了一個計算屬性 reversedMessage 。我們提供的函數將用作屬性 vm.reversedMessage 的 getter 。

console.log(vm.reversedMessage) // -> 'olleH'
vm.message = 'Goodbye'
console.log(vm.reversedMessage) // -> 'eybdooG'

你可以打開瀏覽器的控制臺,修改 vm 。 vm.reversedMessage 的值始終取決于 vm.message 的值。

你可以像綁定普通屬性一樣在模板中綁定計算屬性。 Vue 知道 vm.reversedMessage 依賴于 vm.message ,因此當 vm.message 發生改變時,依賴于 vm.reversedMessage 的綁定也會更新。而且最妙的是我們是聲明式地創建這種依賴關系:計算屬性的 getter 是干凈無副作用的,因此也是易于測試和理解的。

Vue.js  計算屬性computed

2、計算緩存 vs Methods

上例的效果我們也可以通過調用表達式中的method來實現:

Reversed message: "{{ reverseMessage() }}"

// in component
methods: {
    reverseMessage: function () {
        return this.message.split('').reverse().join('')
    }
}

不經過計算屬性,我們可以在 method 中定義一個相同的函數來替代它。對于最終的結果,兩種方式確實是相同的。然而,不同的是計算屬性是基于它的依賴緩存。計算屬性只有在它的相關依賴發生改變時才會重新取值。這就意味著只要 message 沒有發生改變,多次訪問 reversedMessage 計算屬性會立即返回之前的計算結果,而不必再次執行函數。

這也同樣意味著如下計算屬性將不會更新,因為 Date.now() 不是響應式依賴:

computed: {
    now: function () {
        return Date.now()
    }
}

相比而言,每當重新渲染的時候,method 調用總會執行函數。

我們為什么需要緩存?假設我們有一個重要的計算屬性 A ,這個計算屬性需要一個巨大的數組遍歷和做大量的計算。然后我們可能有其他的計算屬性依賴于 A 。如果沒有緩存,我們將不可避免的多次執行 A 的 getter !如果你不希望有緩存,請用 method 替代。

3、計算屬性 vs Watched Propety

Vue.js 提供了一個方法 $watch ,它用于觀察 Vue 實例上的數據變動。當一些數據需要根據其它數據變化時, $watch 很誘人 —— 特別是如果你來自 AngularJS 。不過,通常更好的辦法是使用計算屬性而不是一個命令式的 $watch 回調。思考下面例子:

{{ fullName }}


上面代碼是命令式的和重復的。跟計算屬性對比:

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

4、計算setter

計算屬性默認只有 getter ,不過在需要時你也可以提供一個 setter :

{{ fullName }}


現在在運行 vm.fullName = 'Steven Cury' 時, setter 會被調用, vm.firstName 和 vm.lastName 也會被對應更新。

Vue.js  計算屬性computed

5、常見問題

(1)、計算屬性getter不執行的場景

當計算屬性依賴的數據屬性發生改變時,計算屬性的getter方法會執行。但是在有些情況下,雖然依賴數據屬性發生了改變,但計算屬性的getter方法并不會執行。

當包含計算屬性的節點被移除并且模板中其他地方沒有再引用該屬性時,那么對應的計算屬性的getter方法不會執行


    Toggle Show Total Price
    

`totalPrice`

    Total Price = `totalPrice`

當點擊按鈕是showTotal為false時,此時P元素會被移除,在P元素內部的計算屬性totalPrice的getter方法不會執行。但是當計算屬性一直出現在模板中時,getter方法還是會被執行

Vue.js  計算屬性computed Vue.js  計算屬性computed

創新互聯www.cdcxhl.cn,專業提供香港、美國云服務器,動態BGP最優骨干路由自動選擇,持續穩定高效的網絡助力業務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節活動現已開啟,新人活動云服務器買多久送多久。


文章題目:Vue.js計算屬性computed-創新互聯
網頁URL:http://www.xueling.net.cn/article/dsipcd.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 精品成人免费自拍视频 | 日韩欧美一区二区中文字幕 | 97视频免费 | 高H猛烈失禁潮喷A片在线观看 | 啊轻点内射在线视频 | 奇米导航 | 国产精品日韩欧美一区二区视频 | av在线 | 日韩免费视频中文字幕 | 8x在线观看| 妞干网免费视频 | 在线观看免费人成视频播放 | 国产精品56页 | 亚洲精品二三区 | 久久久亚洲蜜桃 | 两个人看的www免费视频中文 | 亚洲成A人V欧美综合天堂麻豆 | 亚洲欧洲无码专区AV | 日本中文在线一区 | 亚洲AV无码一区二区三区在线播放 | a∨天堂亚洲区无码先锋影音 | 诡异时代全球动漫免费观看 | 天天干夜夜春夜夜爽 | 精品久久久久久久人人人人传媒 | 国产一区二区三区视频在线播放 | 日韩欧美国产视频一区 | 日本中文字幕在线一区 | 久久久久亚洲AV成人网址 | 国产成人亚洲在线观看 | 在线观看视频中文字幕 | 久久久久亚洲AV综合仓井空 | 蜜乳av一区二区三区 | 国产精品自在线拍国产手青青机版 | 国产1区在线观看 | 极品美女国产精品免费一区 | 成人免费无码大片A毛片抽搐色欲 | 无码国内精品久久人妻 | 91一区二区三区在线观看 | 国产一级黄色录像片 | 成人教育av| 免费无码又爽又刺激A片软件妖精 |