computed和watch都是Vue.js中的常用属性,它们可以用来响应数据的变化,但它们的用途和实现方式不同。
computed的实现方式依赖于已经存在的数据属性,它会根据这些数据属性计算出新的值。computed属性通常用于计算和筛选数据。在computed属性被初始化后,只有当计算值发生变化时才会重新计算。computed属性可以看作是一个对已有属性的监听和响应,但计算量过大可能会影响性能。
下面是一个computed的示例代码:
<template>
<div>
<p>商品总价:{{ totalPrice }}</p>
</div>
</template>
<script>
export default {
name: 'Example',
data() {
return {
price: 100,
quantity: 2
}
},
computed: {
totalPrice() {
return this.price * this.quantity
}
}
}
</script>
watch则是一个更加通用和灵活的属性,它能够监测任意一个数据属性的变化,我们可以在数据属性发生变化时执行一些自定义的逻辑。watch属性通常用于数据的异步请求、监测路由参数变化等场景。
下面是一个watch的示例代码:
<template>
<div>
<p>输入的值:{{ inputValue }}</p>
</div>
</template>
<script>
export default {
name: 'Example',
data() {
return {
inputValue: ''
}
},
watch: {
inputValue(newValue, oldValue) {
console.log('输入值变化了')
}
}
}
</script>