欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue改變computed值

錢良釵2年前10瀏覽0評論

Vue是一款前端框架,提供了一套MVVM的數據綁定機制。其中computed是Vue提供的一個計算屬性,它會根據自己所依賴的數據的變化而自動更新。但是有時候我們需要手動改變computed的值,這時候該怎么做呢?下面就來詳細介紹如何改變computed的值。

首先,我們需要知道computed是如何計算出來的。computed中最重要的是一個 getter 函數,這個函數會根據依賴的數據進行計算,返回一個新的結果(即computed的值)。但是這里有一個重要的點,computed的getter函數是不能接收任何參數的。所以如果我們想要改變computed的值,就不能再直接修改computed中所依賴的數據(這樣會觸發computed的重新計算),而是需要額外引入一些狀態。

// 例如我們有一個computed計算出當前選中的商品總價
computed: {
totalCost() {
return this.selectedItems.reduce((total, item) =>total + item.price*item.amount, 0)
}
},
// 調用computed的值

Total cost: {{ totalCost }}

接下來,我們可以通過watch監聽一些狀態的變化,當狀態發生變化的時候,我們就可以手動設置computed的新值。

// 在Vue實例中定義狀態變量
data() {
return {
totalCostOverride: null // 默認為null不會改變computed的值
}
},
// 監聽totalCostOverride的變化,手動改變computed的值
watch: {
totalCostOverride: function(newVal) {
this.$nextTick(() =>{
this.$set(this, 'totalCost', newVal)
})
}
}

上面的代碼中,我們定義一個totalCostOverride的狀態變量,它可以用來覆蓋computed中的值。當totalCostOverride發生變化時,我們利用$set函數手動改變computed中的值。注意這里需要使用$nextTick來保證DOM已經渲染完畢,否則$set無法生效。

最后,我們可以添加一個按鈕來觸發totalCostOverride的改變,從而手動改變computed的值。

// 添加一個按鈕methods: {
// 通過方法來改變totalCostOverride的值
overrideTotalCost(value) {
this.totalCostOverride = value
},
}

現在,我們就可以通過點擊按鈕來手動改變computed的值了。

總結一下,想要手動改變computed的值,我們需要引入一個額外的狀態變量來保存手動改變的值。然后通過watch監聽狀態變量的變化,手動修改computed的值。最后,通過按鈕等交互來觸發狀態變量的變化,從而手動改變computed的值。