久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

vue中computed表示什么

在vue中,computed表示“計算屬性”,是根據依賴關系進行緩存的計算,只有在它的相關依賴發生改變時才會進行更新。computed的每一個計算屬性都會被緩存起來,只要計算屬性所依賴的屬性發生變化,計算屬性就會重新執行,視圖也會更新。computed計算屬性的結果會被緩存,除非依賴的響應式 property 變化才會重新計算。

vue中computed表示什么

本教程操作環境:windows7系統、vue3版,DELL G3電腦。

computed定義

computed是vue的計算屬性,是根據依賴關系進行緩存的計算,只有在它的相關依賴發生改變時才會進行更新

computed用法

一般情況下,computed默認使用的是getter屬性

vue中computed表示什么

computed的響應式依賴(緩存)

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

<template>   <div>     <div>       姓:<input type="text" v-model="firstName" />     </div>     <div>       名:<input type="text" v-model="lastName" />     </div>     <!-- 調用兩次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 的工作原理,只需要理解下面三個問題

1、computed 也是響應式的

2、computed 如何控制緩存

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

白話原理:

computed的響應性

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

簡單的說:

  • 你給 computed 設置的 get 和 set 函數,會與 Object.defineProperty 關聯起來。

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

  • 在讀取 computed 時,會執行設置的 get 函數,但是并沒有這么簡單,因為還有一層緩存的操作。如果數據沒有被污染,不為臟數據,那將直接從緩存中取值,而不會去執行 get 函數。(什么是臟數據,后文中將會說到)

  • 賦值 computed 時,會執行所設置的 set 函數。這個就比較簡單,會直接把 set 賦值給 Object.defineProperty – set。

Computed 如何控制緩存

我們都知道,computed 是有緩存的,官方已經說明。

計算屬性的結果會被緩存,除非依賴的響應式 property 變化才會重新計算。注意,如果某個依賴 (比如非響應式 property) 在該實例范疇之外,則計算屬性是 不會 被更新的。

我們為什么需要緩存?假設我們有一個性能開銷比較大的計算屬性 A,它需要遍歷一個巨大的數組并做大量的計算。然后我們可能有其他的計算屬性依賴于 A 。如果沒有緩存,我們將不可避免的多次執行 A 的 get 函數。大量的計算將導致JS線程被占用,阻塞頁面的渲染。

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

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

TIP:computed 計算就是調用你設置的 get 函數,然后得到返回值。

computed 控制緩存的重要一點是 【臟數據標志位 dirty】 dirty 是 watcher 的一個屬性。

  • 當 dirty 為 true 時,讀取 computed 會執行 get 函數,重新計算。

  • 當 dirty 為 false 時,讀取 computed 會使用緩存。

緩存機制簡述

  • 一開始每個 computed 新建自己的 watcher時,會設置 watcher.dirty = true,以便于 computed 被使用時,會計算得到值

  • 當依賴的數據變化了,通知 computed 時,會賦值 watcher.dirty = true,此時重新讀取 computed 時,會執行 get 函數重新計算。

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

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

簡述Vue響應式原理

computed的本質與data相似。當被使用時,會為其建立訂閱者watcher,交給依賴項收集。如:當 A 引用 B 的時候,B 會收集 A 的watcher。

場景設置

現在 頁面A 引用了 computed B,computed B 依賴了 data C。

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

那么,當 data C 變化,會發生什么呢?

會是這樣嗎?

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

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

一條鏈式的操作? C -> B -> A 這樣的執行順序嗎?

答案是否定的。

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

  • 通知 computed B 的 watcher 更新,只會重置 臟數據標志位 dirty =true,不會計算值。

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

vue中computed表示什么

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

data C 的依賴收集器會同時收集到 computed B 和 頁面 A 的 watcher。

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

在 頁面 A 在讀取 computed B 的時候,趁機把 頁面A 的watcher塞給了 data C ,于是 頁面A watcher 和 data C 間接地關聯在了一起,于是 data C 就會收集到 頁面A watcher。

至于具體的代碼是怎么實現的,將會在下文源碼分析中講解。

所以computed 如何更新?

被依賴通知更新后,重置 臟數據標志位 ,頁面讀取 computed 時再更新值。

白話總結

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

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

【相關視頻教程推薦:vuejs入門教程、web前端入門】

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
青青伊人久久| 欧美 日韩 国产精品免费观看| 国产99久久久国产精品成人免费| 国产日韩免费| 国产精品片aa在线观看| 国产精品白丝一区二区三区| 久久激情五月婷婷| 精品亚洲a∨| 91精品国产成人观看| 亚洲大全视频| 一区二区电影| 美女国产一区二区三区| 成人欧美一区二区三区的电影| 中文字幕色婷婷在线视频| 亚洲午夜久久久久久尤物| 久久国产66| 国产激情综合| 欧美午夜不卡影院在线观看完整版免费| 欧美久久天堂| 日韩一区二区三区精品视频第3页| 国产精品一区二区av日韩在线| 高清久久精品| 久久国产精品久久久久久电车| 欧美天堂一区| 亚洲天堂久久| 精品视频一区二区三区在线观看 | 亚洲自拍另类| 国产欧美久久一区二区三区| 桃色一区二区| 国产婷婷精品| 久久精品国产免费| 亚洲开心激情| 久久精品国语| 久久97久久97精品免视看秋霞| 亚洲福利精品| 日韩av在线播放网址| 性欧美精品高清| 国产aⅴ精品一区二区四区| 免费人成网站在线观看欧美高清| 精品一区91| 欧美亚洲三级| 中文字幕一区二区精品区| 日韩不卡免费高清视频| 国产精品777777在线播放| 黄色国产精品| 久久婷婷亚洲| 久久伊人亚洲| 国产麻豆一区二区三区精品视频| 亚洲一区二区网站| 一区二区视频欧美| 91精品国产乱码久久久久久久| 久久精品国产福利| 国产精品视频一区二区三区| 日本 国产 欧美色综合| 欧美日韩在线播放视频| 国产一区不卡| 99久久99久久精品国产片果冰| 在线视频精品| se01亚洲视频 | 精品99久久| 国产视频久久| 欧美日韩国产高清| 日韩黄色大片网站| 久久99久久久精品欧美| 日韩精品一级| 日韩欧美2区| 视频一区免费在线观看| 午夜久久av| 欧美日韩伊人| 日本va欧美va欧美va精品| 亚洲ww精品| 麻豆91小视频| 国产精品扒开腿做爽爽爽软件| 国产精品对白久久久久粗| 国产专区精品| 国精品一区二区| 综合亚洲视频| 黄色欧美在线| 好看的亚洲午夜视频在线| 一区二区精彩视频| 老司机免费视频一区二区| 日韩成人精品一区| 麻豆精品91| 久久久久亚洲精品中文字幕| 福利精品一区| 久色成人在线| 国产成人精品一区二区三区视频 | 日韩精品一区第一页| 国产欧美日韩一区二区三区四区 | 久久国产主播| 久久狠狠久久| 久久精品高清| 亚洲综合激情在线| 在线亚洲人成| 日韩欧美高清一区二区三区| 免费在线日韩av| 午夜国产精品视频| 麻豆久久一区二区| 男人的天堂久久精品| 国产一区二区三区久久| 亚洲精品婷婷| 日韩电影免费网站| 国产伦精品一区二区三区视频 | 国产盗摄——sm在线视频| 一级欧美视频| 中文字幕在线官网| 国产美女撒尿一区二区| 好吊视频一区二区三区四区| 福利一区和二区| 国产精品一国产精品k频道56| 欧美日韩三区| 国产一区亚洲| 秋霞国产精品| 欧美香蕉视频| 中文字幕在线官网| 精品国产成人| 美女在线视频一区| 久久国产精品美女| 国产欧美一区二区三区精品观看| 欧美另类专区| 日本不卡免费高清视频在线| 青青草精品视频| 日韩精品五月天| 婷婷亚洲精品| 日本视频中文字幕一区二区三区| 亚洲免费观看高清完整版在线观| 久久99伊人| 亚洲五月综合| 欧美日韩精品一区二区三区视频 | 国产精品毛片aⅴ一区二区三区| 91九色精品| 91成人在线| 日韩高清在线不卡| 亚洲精品日韩久久| 日韩精品欧美大片| 日韩精品国产欧美| 国产高清亚洲| 精品三级在线观看视频| 青青草91视频| 国产一区二区三区久久久久久久久| 欧美va天堂| 九九99久久精品在免费线bt| 国产伦理一区| 国产伊人久久| 欧美精品一区二区三区精品| 国产精品美女| 国产一精品一av一免费爽爽| 精品女同一区二区三区在线观看| 欧美男人天堂| 美女久久一区| 国产激情欧美| 亚洲精品.com| 97精品国产99久久久久久免费| 久久精品国产精品亚洲毛片| 神马午夜久久| 国产精品人人爽人人做我的可爱| 中文字幕亚洲精品乱码| 国产精品久久久久久久久久齐齐| 首页国产精品| 日韩欧美2区| 国产高潮在线| 蜜臀av亚洲一区中文字幕| 国产精品天天看天天狠| 久久精品二区三区| 日韩在线黄色| 丝袜av一区| 欧美日韩一区二区国产| 正在播放日韩精品| 日本一区免费网站| 日韩啪啪电影网| 日韩影片在线观看| 日韩精品dvd| 青青国产精品| 在线精品视频一区| 色婷婷狠狠五月综合天色拍| 天海翼精品一区二区三区| 风间由美中文字幕在线看视频国产欧美| 一本色道精品久久一区二区三区| 97欧美在线视频| 国产欧美自拍一区| 免费国产亚洲视频| 欧美91视频| av亚洲免费| 久久婷婷亚洲| 999久久久精品国产| 在线手机中文字幕| 日韩av影院| 美女精品一区| 欧美.日韩.国产.一区.二区| 精品国产成人| 国产999精品在线观看| 久久精品国产成人一区二区三区| 国产精品亲子伦av一区二区三区| 青青草91久久久久久久久| 日本91福利区| 国产精品一国产精品| 久久精品理论片| 日韩免费福利视频| 亚洲性图久久| 蜜桃免费网站一区二区三区|