Vue中的計算屬性computed傳參方式
vue計算屬性computed傳參
計算屬性在依賴值不變的情況下,結果是會緩存數(shù)據(jù)的;
methods中定義的方法調(diào)用則不會緩存。
所以計算屬性相對函數(shù)來說性能更好一些。
計算屬性的傳參方式
1. 如果使用類似函數(shù)的調(diào)用傳參方式,會報如下錯誤:

如下是錯誤操作:
data() {
return {
data: [{id: 1},{id: 2}]
}
}
computed: {
testComputed(val) {
return this.data[val]
}
}
created() {
this.testComputed(0)
}2. 正確使用方式(寫成閉包的形式):
data() {
return {
data: [{id: 1},{id: 2}]
}
}
computed: {
testComputed() {
return val => {
return this.data[val]
}
},
}
created() {
console.log(this.testComputed(0)) // { "id": 1 }
}vue computed原理
computed 本質是一個惰性求值的觀察者。
computed 內(nèi)部實現(xiàn)了一個惰性的 watcher,也就是 computed watcher 不會立刻求值,它同時持有一個 dep 實例。
其內(nèi)部通過 this.dirty 屬性標記計算屬性是否需要重新求值。
當 computed 的依賴狀態(tài)發(fā)生改變時,就會通知這個惰性的 watcher,
computed watcher 通過 this.dep.subs.length 判斷有沒有訂閱者, 并設置 this.dirty = true
- 有的話,會重新計算,然后對比新舊值,如果變化了,會重新渲染。 (Vue 想確保不僅僅是計算屬性依賴的值發(fā)生變化,而是當計算屬性最終計算的值發(fā)生變化時才會觸發(fā)渲染 watcher 重新渲染,本質上是一種優(yōu)化。)
- 沒有的話,僅僅把 this.dirty = true。 (當計算屬性依賴于其他數(shù)據(jù)時,屬性并不會立即重新計算,只有之后 其他地方需要讀取屬性 的時候,它才會真正計算,即具備 lazy(懶計算)特性。比如這個屬性并沒有被其他地方用到,就不會重新去計算它)
- 所以惰性watcher/計算屬性在創(chuàng)建時是不會去求值的,是在使用的時候去求值的。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue.js 打包時出現(xiàn)空白頁和路徑錯誤問題及解決方法
這篇文章主要介紹了vue.js 打包時出現(xiàn)空白頁和路徑錯誤問題及解決方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06
Vue移動端實現(xiàn)調(diào)用相機掃描二維碼或條形碼的全過程
最近在使用vue開發(fā)的h5移動端想要實現(xiàn)一個調(diào)用攝像頭掃描二維碼的功能,所以下面這篇文章主要給大家介紹了關于Vue移動端實現(xiàn)調(diào)用相機掃描二維碼或條形碼的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-08-08
vue-quill-editor+plupload富文本編輯器實例詳解
這篇文章主要介紹了vue-quill-editor+plupload富文本編輯器實例詳解,需要的朋友可以參考下2018-10-10
element-plus/element-ui走馬燈配置圖片及圖片自適應的最簡便方法
走馬燈功能在展示圖片時經(jīng)常用到,下面這篇文章主要給大家介紹了關于element-plus/element-ui走馬燈配置圖片及圖片自適應的最簡便方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-03-03
Vue基于iview實現(xiàn)登錄密碼的顯示與隱藏功能
這篇文章主要介紹了Vue基于iview實現(xiàn)登錄密碼的顯示與隱藏功能,本文通過截圖實例代碼說明給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
vue2中,根據(jù)list的id進入對應的詳情頁并修改title方法
今天小編就為大家分享一篇vue2中,根據(jù)list的id進入對應的詳情頁并修改title方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
vuejs2.0運用原生js實現(xiàn)簡單的拖拽元素功能示例
本篇文章主要介紹了vuejs2.0運用原生js實現(xiàn)簡單的拖拽元素功能示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02

