奕玖科技 > 新闻中心 > 技术文章

vue中computed和watch属性的区别

来源: 奕玖科技 瘦死的猪 | 2023/3/1 11:03:41

Vue.js 是一个渐进式 JavaScript 框架,它可以帮助开发者更高效地开发 web 应用程序。Vue.js 提供了一些强大的特性,其中两个特别重要的是 computed 和 watch 属性。这两个属性在实现上类似,但在使用场景上有很大的不同。

20230205638111977198393274.png

首先,让我们了解一下 computed 属性。Computed 属性是 Vue 中一种可以根据其它属性计算出来的属性。它是一种响应式属性,当其它属性发生变化时,它也会随之更新。它的定义方法如下:

computed: {

computedProp: function () {

// 计算逻辑

}

}

与普通的数据属性不同,computed 属性是计算出来的结果,不需要手动触发更新。当计算属性依赖的数据发生改变时,Vue.js 会自动更新 computed 属性的值。

让我们看一个简单的例子。假设我们有一个输入框,让用户输入一个数字,然后将该数字的平方显示在页面上。我们可以使用 computed 属性来实现这个功能:

<template>
<p>
<input type="text" v-model="inputNumber">
<p>{{ squared }}</p>
</p>
</template>
<script>
export default {
data () {
return {
inputNumber: 0
}
},
computed: {
squared () {
return this.inputNumber * this.inputNumber
}
}
}
</script>

接下来,我们来了解一下 watch 属性。Watch 属性是 Vue 中一种用于监听数据变化的特性。它的作用是当某个数据发生变化时,自动触发回调函数。它的定义方法如下:

watch: {
watchProp: function (newVal, oldVal) {
// 监听逻辑
}
}

Watch 属性的作用与 computed 属性类似,但它更加灵活,可以处理更复杂的逻辑。当监听的数据发生变化时,Vue.js 会自动调用 watch 函数,并将变化后的值和变化前的值作为参数传入。

让我们看一个简单的例子。假设我们有一个输入框,让用户输入一个数字,当数字大于 10 时,显示“数字太大了”,否则显示“数字很小”。我们可以使用 watch 属性来实现这个功能:

<template>
<p>
<input type="text" v-model="inputNumber">
<p>{{ message }}</p>
</p>
</template>

<script>
export default {
data () {
return {
inputNumber: 0,
message: ''
}
},
watch: {
inputNumber (newVal, oldVal) {
this.message = newVal > 10 ? '数字太大了' : '数字很小'
}
}
}
</script>

通过对比上面的两个例子,我们可以发现,computed 属性是一种高效的实现方式,因为它只在其依赖的数据发生变化时才会重新计算,而 watch 属性则没有这个优势。当数据变化时,watch 属性的回调函数将被触发,即使它的返回值没有改变。如果对某个数据进行多次监听,则在每次变化时都会触发所有回调函数,显然会增加额外的开销。

总的来说,computed 属性是实现简单的数据变化时的逻辑处理的首选方式,而 watch 属性则适用于处理更复杂的逻辑。比如说,当某个数据变化时需要进行异步操作或需要执行多次操作时,则使用 watch 属性是更好的选择。

最后,我们再总结一下 computed 属性和 watch 属性的主要区别:

1. 计算方式不同:computed 属性是通过依赖数据的变化自动计算得到,而 watch 属性是通过手动监听数据变化得到。

2. 效率不同:computed 属性更加高效,因为它只在依赖数据发生变化时才会重新计算,而 watch 属性每次数据变化都会触发回调函数,因此不如 computed 属性高效。

3. 适用场景不同:computed 属性适用于实现简单的数据变化时的逻辑处理,而 watch 属性则适用

于处理更复杂的逻辑,例如需要进行异步操作或执行多次操作。

4. 可读性不同:computed 属性在代码中直接展示了数据之间的关系,比较容易理解,而 watch 属性逻辑则隐藏在回调函数中,不够直观。

最后,我们再强调一下,computed 属性和 watch 属性并不是互相排斥的,在需要的场景下,两者都可以同时使用。而选择使用哪一个,取决于我们的需求以及代码的可读性和效率。

通过对 computed 属性和 watch 属性的详细介绍,我们可以发现,它们都是 Vue 中非常重要的一个特性,它们能够帮助我们更方便地管理数据和处理数据变化,从而实现更高效、更简洁的代码。如果想要在 Vue 中更好地使用它们,我们需要对它们的特点、适用场景、使用方法有深入的了解,并多加实践。

栏目导航
相关文章
文章标签
关于我们
公司简介
企业文化
资质荣誉
服务项目
高端网站定制
微信小程序开发
SEO排名推广
新闻动态
行业新闻
技术学院
常见问题
联系我们
联系我们
人才招聘
联系方式
Q Q:24722
微信:24722
电话:13207941926
地址:江西省抚州市赣东大道融旺国际3栋
Copyright©2008-2022 抚州市奕玖科技有限公司 备案号:赣ICP备2022010182号-1