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