Vue.js 是一款流行的前端框架,它提供了計(jì)算屬性 computed,可用于聲明響應(yīng)式的依賴,當(dāng)依賴變化時(shí)自動(dòng)計(jì)算結(jié)果,節(jié)約了手動(dòng)重復(fù)計(jì)算的時(shí)間和精力。
new Vue({ el: '#app', data: { num1: 1, num2: 2 }, computed: { total: function() { return this.num1 + this.num2; } } })
上述代碼中,computed 屬性聲明了一個(gè)名為 total 的計(jì)算屬性,它依賴于 data 屬性中的 num1 和 num2。當(dāng) num1 或 num2 發(fā)生變化時(shí),total 自動(dòng)計(jì)算其結(jié)果并返回,而無需手動(dòng)調(diào)用方法或修改值。
計(jì)算屬性 computed 還可以接受 setter 函數(shù),用于監(jiān)聽計(jì)算屬性的變化并更新其他依賴關(guān)系。如果計(jì)算屬性只有 getter 函數(shù),Vue.js 會(huì)將其變?yōu)橐粋€(gè)只讀屬性,無法手動(dòng)修改。
new Vue({ el: '#app', data: { price: 10, discount: 0.9 }, computed: { finalPrice: { get: function() { return this.price * this.discount; }, set: function(newVal) { this.price = newVal / this.discount; } } } })
上述代碼中,計(jì)算屬性 finalPrice 的 getter 函數(shù)返回 price 和 discount 的乘積,setter 函數(shù)將計(jì)算屬性的值更新到 price 中,從而實(shí)現(xiàn)對(duì)于 discount 變化的響應(yīng)。
使用計(jì)算屬性能夠讓 Vue 應(yīng)用更簡(jiǎn)潔、高效和可維護(hù)。通過聲明依賴關(guān)系和自動(dòng)計(jì)算結(jié)果,開發(fā)者可以更專注于業(yè)務(wù)邏輯而不是手動(dòng)計(jì)算和更新數(shù)值。