gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

vue中computed表示什么

在vue中,computed表示“計(jì)算屬性”,是根據(jù)依賴關(guān)系進(jìn)行緩存的計(jì)算,只有在它的相關(guān)依賴發(fā)生改變時(shí)才會(huì)進(jìn)行更新。computed的每一個(gè)計(jì)算屬性都會(huì)被緩存起來,只要計(jì)算屬性所依賴的屬性發(fā)生變化,計(jì)算屬性就會(huì)重新執(zhí)行,視圖也會(huì)更新。computed計(jì)算屬性的結(jié)果會(huì)被緩存,除非依賴的響應(yīng)式 property 變化才會(huì)重新計(jì)算。

vue中computed表示什么

本教程操作環(huán)境:windows7系統(tǒng)、vue3版,DELL G3電腦。

computed定義

computed是vue的計(jì)算屬性,是根據(jù)依賴關(guān)系進(jìn)行緩存的計(jì)算,只有在它的相關(guān)依賴發(fā)生改變時(shí)才會(huì)進(jìn)行更新

computed用法

一般情況下,computed默認(rèn)使用的是getter屬性

vue中computed表示什么

computed的響應(yīng)式依賴(緩存)

1. computed的每一個(gè)計(jì)算屬性都會(huì)被緩存起來,只要計(jì)算屬性所依賴的屬性發(fā)生變化,計(jì)算屬性就會(huì)重新執(zhí)行,視圖也會(huì)更新。下面代碼中,計(jì)算屬性fullName,它依賴了firstNamelastName這兩個(gè)屬性,只要它們其中一個(gè)屬性變化,fullName就會(huì)重新執(zhí)行。
2.computed計(jì)算屬性會(huì)被緩存,在下面代碼中使用了兩次fullName,但在控制臺(tái)只輸出了一次 “這是fullName”。

<template>   <div>     <div>       姓:<input type="text" v-model="firstName" />     </div>     <div>       名:<input type="text" v-model="lastName" />     </div>     <!-- 調(diào)用兩次fullName -->     <div>姓名:{{ fullName }}</div>     <div>姓名:{{ fullName }}</div>   </div> </template> <script> export default {   data() {     return {       firstName: "張",       lastName: "三",     };   },   computed: {     fullName() {         console.log("這是fullName");         return this.firstName + this.lastName;     }   } }; </script>

computed 的工作原理

要理解 computed 的工作原理,只需要理解下面三個(gè)問題

1、computed 也是響應(yīng)式的

2、computed 如何控制緩存

3、依賴的 data 改變了,computed 如何更新

白話原理:

computed的響應(yīng)性

不清楚什么是響應(yīng)式,什么是訂閱者watcher?可以先了解Vue響應(yīng)式原理。

簡單的說:

  • 你給 computed 設(shè)置的 get 和 set 函數(shù),會(huì)與 Object.defineProperty 關(guān)聯(lián)起來。

  • 所以 Vue 能監(jiān)聽捕捉到,讀取 computed 和 賦值 computed 的操作。

  • 在讀取 computed 時(shí),會(huì)執(zhí)行設(shè)置的 get 函數(shù),但是并沒有這么簡單,因?yàn)檫€有一層緩存的操作。如果數(shù)據(jù)沒有被污染,不為臟數(shù)據(jù),那將直接從緩存中取值,而不會(huì)去執(zhí)行 get 函數(shù)。(什么是臟數(shù)據(jù),后文中將會(huì)說到)

  • 賦值 computed 時(shí),會(huì)執(zhí)行所設(shè)置的 set 函數(shù)。這個(gè)就比較簡單,會(huì)直接把 set 賦值給 Object.defineProperty – set。

Computed 如何控制緩存

我們都知道,computed 是有緩存的,官方已經(jīng)說明。

計(jì)算屬性的結(jié)果會(huì)被緩存,除非依賴的響應(yīng)式 property 變化才會(huì)重新計(jì)算。注意,如果某個(gè)依賴 (比如非響應(yīng)式 property) 在該實(shí)例范疇之外,則計(jì)算屬性是 不會(huì) 被更新的。

我們?yōu)槭裁葱枰彺妫考僭O(shè)我們有一個(gè)性能開銷比較大的計(jì)算屬性 A,它需要遍歷一個(gè)巨大的數(shù)組并做大量的計(jì)算。然后我們可能有其他的計(jì)算屬性依賴于 A 。如果沒有緩存,我們將不可避免的多次執(zhí)行 A 的 get 函數(shù)。大量的計(jì)算將導(dǎo)致JS線程被占用,阻塞頁面的渲染。

那么在 Vue 中,computed 是如何判斷是否使用緩存的呢?

首先 computed 計(jì)算后,會(huì)把計(jì)算得到的值保存到一個(gè)變量(watcher.value)中。讀取 computed 并使用緩存時(shí),就直接返回這個(gè)變量。當(dāng) computed 更新時(shí),就會(huì)重新賦值更新這個(gè)變量。

TIP:computed 計(jì)算就是調(diào)用你設(shè)置的 get 函數(shù),然后得到返回值。

computed 控制緩存的重要一點(diǎn)是 【臟數(shù)據(jù)標(biāo)志位 dirty】 dirty 是 watcher 的一個(gè)屬性。

  • 當(dāng) dirty 為 true 時(shí),讀取 computed 會(huì)執(zhí)行 get 函數(shù),重新計(jì)算。

  • 當(dāng) dirty 為 false 時(shí),讀取 computed 會(huì)使用緩存。

緩存機(jī)制簡述

  • 一開始每個(gè) computed 新建自己的 watcher時(shí),會(huì)設(shè)置 watcher.dirty = true,以便于 computed 被使用時(shí),會(huì)計(jì)算得到值

  • 當(dāng)依賴的數(shù)據(jù)變化了,通知 computed 時(shí),會(huì)賦值 watcher.dirty = true,此時(shí)重新讀取 computed 時(shí),會(huì)執(zhí)行 get 函數(shù)重新計(jì)算。

  • computed 計(jì)算完成之后,會(huì)設(shè)置 watcher.dirty = false,以便于其他地方再次讀取時(shí),使用緩存,免于計(jì)算。

依賴的data變化,computed如何更新?

簡述Vue響應(yīng)式原理

computed的本質(zhì)與data相似。當(dāng)被使用時(shí),會(huì)為其建立訂閱者watcher,交給依賴項(xiàng)收集。如:當(dāng) A 引用 B 的時(shí)候,B 會(huì)收集 A 的watcher。

場(chǎng)景設(shè)置

現(xiàn)在 頁面A 引用了 computed B,computed B 依賴了 data C。

像是這樣,A->B->C 的依賴順序。

那么,當(dāng) data C 變化,會(huì)發(fā)生什么呢?

會(huì)是這樣嗎?

  • 通知 computed B 更新,然后 computed B 開始重新計(jì)算。

  • 接著 computed B 通知 頁面A更新,然后重新讀取 computed。

一條鏈?zhǔn)降牟僮鳎?C -> B -> A 這樣的執(zhí)行順序嗎?

答案是否定的。

其實(shí)真正的流程是,data C 開始變化后…….

  • 通知 computed B 的 watcher 更新,只會(huì)重置 臟數(shù)據(jù)標(biāo)志位 dirty =true,不會(huì)計(jì)算值。

  • 通知 頁面 A watcher 進(jìn)行更新渲染,進(jìn)而重新讀取 computed B ,然后 computed B 開始重新計(jì)算。

vue中computed表示什么

為什么 data C 能通知 頁面 A?

data C 的依賴收集器會(huì)同時(shí)收集到 computed B 和 頁面 A 的 watcher。

為什么 data C 能收集到 頁面A 的watcher?

在 頁面 A 在讀取 computed B 的時(shí)候,趁機(jī)把 頁面A 的watcher塞給了 data C ,于是 頁面A watcher 和 data C 間接地關(guān)聯(lián)在了一起,于是 data C 就會(huì)收集到 頁面A watcher。

至于具體的代碼是怎么實(shí)現(xiàn)的,將會(huì)在下文源碼分析中講解。

所以computed 如何更新?

被依賴通知更新后,重置 臟數(shù)據(jù)標(biāo)志位 ,頁面讀取 computed 時(shí)再更新值。

白話總結(jié)

  • computed 通過 watcher.dirty 控制是否讀取緩存。

  • computed 會(huì)讓 【data依賴】 收集到 【依賴computed的watcher】,從而 data 變化時(shí),會(huì)同時(shí)通知 computed 和 依賴computed的地方。

【相關(guān)視頻教程推薦:vuejs入門教程、web前端入門】

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
久久久久久免费看| 欧美视频国产视频| 蜜臀在线免费观看| 国产黄色特级片| 日韩激情视频一区二区| 在线a免费观看| 日本高清一区二区视频| 污视频在线观看免费网站| 欧美黑人又粗又大又爽免费| www插插插无码视频网站| 成人小视频在线观看免费| 少妇熟女一区二区| 色撸撸在线观看| 2022中文字幕| 91九色丨porny丨国产jk| 成人av一级片| 99热手机在线| 欧美国产视频一区| 欧美 日韩 亚洲 一区| 亚洲黄色av片| 男女啪啪免费视频网站| 黄色免费高清视频| caopor在线视频| 久久这里只精品| 欧美日韩在线不卡视频| 男女爱爱视频网站| 日本a在线天堂| 欧美一区二区视频在线播放| 女同性恋一区二区| 老司机午夜网站| 久久久久久久香蕉| www.亚洲成人网| 欧美激情国产精品日韩| 欧美少妇性生活视频| www.国产区| 日本黄色a视频| 91看片淫黄大片91| 成人中文字幕在线播放| 免费毛片小视频| 老司机午夜性大片| 4444在线观看| 999香蕉视频| av在线com| 麻豆三级在线观看| 国产二级片在线观看| 亚洲图片 自拍偷拍| 色噜噜狠狠永久免费| 中文字幕精品一区二区三区在线| 男人操女人免费软件| 天天干天天曰天天操| 99视频精品免费| 亚洲第一页在线视频| 国产内射老熟女aaaa| 欧美啪啪免费视频| 日韩av在线综合| 天堂在线资源视频| 亚洲中文字幕无码av永久| 久久成人免费观看| 国产精品视频网站在线观看| 黄色手机在线视频| 天天干天天干天天干天天干天天干| 欧美性猛交xxxx乱大交91| 国产福利视频在线播放| 久久亚洲a v| 一区二区三区日韩视频| 欧美日韩在线中文| 无颜之月在线看| 国内外成人激情免费视频| 国产精品69页| www日韩视频| 五月天亚洲视频| 日韩一级片播放| 奇米777在线视频| 一级黄色大片儿| 婷婷激情综合五月天| 亚洲视频在线不卡| 国产www免费| 日本www.色| 一级淫片在线观看| 91丝袜超薄交口足| 丰满少妇久久久| 亚洲欧美偷拍另类| 国产精品久久中文字幕| 国产又黄又猛又粗又爽的视频| 亚洲精品永久视频| 女性隐私黄www网站视频| 欧美性受xxxx黑人猛交88| 国产h视频在线播放| 无人在线观看的免费高清视频| 免费黄色一级网站| 国产91porn| 国产精品欧美激情在线观看| 99视频免费播放| 国产精品宾馆在线精品酒店| 97在线免费视频观看| 中文字幕色网站| 手机精品视频在线| 亚洲精品mv在线观看| 久久久久久香蕉| 国自产拍偷拍精品啪啪一区二区| 婷婷视频在线播放| 一区二区三区国产免费| 日韩久久一级片| 九九视频精品在线观看| 簧片在线免费看| 色噜噜狠狠永久免费| 日韩欧美视频免费在线观看| 久久这里只有精品23| 黄色免费视频大全| 800av在线免费观看| 成人黄色一级大片| 天堂а√在线中文在线| 欧美一区二区三区爽大粗免费| 成人精品视频一区二区| youjizz.com亚洲| 免费黄色日本网站| 国产天堂视频在线观看| 天天爽夜夜爽一区二区三区| 91免费网站视频| 国产在线青青草| 九九九九九国产| 国产主播自拍av| 成人手机在线播放| 超碰97人人射妻| 黄色一级片在线看| 久激情内射婷内射蜜桃| 国产日韩第一页| 中文字幕精品在线播放| 久久久久久久少妇| 国产精品免费看久久久无码| av五月天在线| 韩国视频一区二区三区| 久久久一本二本三本| 男女啪啪免费观看| 成人综合视频在线| 日本十八禁视频无遮挡| 尤物国产在线观看| 欧美日韩理论片| 18视频在线观看娇喘| 亚洲黄色小视频在线观看| 激情五月亚洲色图| 亚洲va在线va天堂va偷拍| 黄色一级视频播放| 欧美 丝袜 自拍 制服 另类| 五月天婷婷激情视频| 超碰97在线看| www.com毛片| aaa免费在线观看| 国产一区二区在线免费播放| 一个色综合久久| 亚洲欧美另类动漫| 国产精品久久久久久久久电影网| 欧美爱爱视频免费看| 手机在线成人免费视频| 色香蕉在线观看| 日日碰狠狠躁久久躁婷婷| 99er在线视频| 毛片一区二区三区四区| 毛葺葺老太做受视频| 大片在线观看网站免费收看| 亚洲第一狼人区| 国产麻花豆剧传媒精品mv在线| 国产3p在线播放| 狠狠热免费视频| 欧美国产日韩在线播放| 免费看国产黄色片| www.超碰97.com| 成人日韩在线视频| 色婷婷综合久久久久中文字幕 | 亚洲欧洲日产国码无码久久99| av中文字幕av| www.-级毛片线天内射视视| 五月天婷婷在线观看视频| 亚洲一区在线不卡| 中文字幕国产传媒| 少妇熟女一区二区| 性一交一乱一伧国产女士spa| 97在线免费视频观看| 免费看日b视频| 2022亚洲天堂| 高潮一区二区三区| 久久久999免费视频| 最新天堂在线视频| 欧美日韩在线一| 亚洲第一成肉网| 欧美图片激情小说| 欧美国产在线一区| 婷婷六月天在线| 日本高清免费观看| 久久国产成人精品国产成人亚洲| 欧美国产日韩激情| 国产日韩第一页| 在线观看国产中文字幕| 九色在线视频观看| 色婷婷.com| av观看免费在线| 免费在线观看视频a| 四虎免费在线观看视频| 99热这里只有精品7| 国产91色在线观看|