Vue 中的computed和watch
场景:假设我们有一个简单的购物车应用,需要计算购物车中商品的总价。
在这个例子中:
- 使用
v-model指令绑定了两个输入字段,一个是"数量"(quantity),另一个是"单价"(unitPrice)。 - 我们定义了一个
computed属性totalAmount,用于计算购物车的总价,它依赖于quantity和unitPrice这两个数据属性。当quantity或unitPrice变化时,totalAmount会自动重新计算。 - 我们还使用
watch来监视quantity的变化。当quantity变化时,会触发watch中的函数,这里我们简单地打印出了变化的信息。
这个例子中,computed用于派生数据,计算购物车的总价,而watch用于在quantity变化时执行自定义操作。这样就展示了它们的不同用途。
<!DOCTYPE html>
<html>
<head>
<title>Vue.js Shopping Cart</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<input v-model="quantity" type="number" placeholder="数量">
<input v-model="unitPrice" type="number" placeholder="单价">
<p>总价: {{ totalAmount }}</p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
quantity: 0,
unitPrice: 0
},
computed: {
totalAmount: function() {
return this.quantity * this.unitPrice;
}
},
watch: {
quantity: function(newQuantity, oldQuantity) {
console.log('Quantity changed from ' + oldQuantity + ' to ' + newQuantity);
// 在这里你可以执行任何自定义操作,比如发送购物车数量变化的日志或向服务器发起请求。
}
}
});
</script>
</body>
</html>










