【大前端】说说vue的计算属性

说说vue的计算属性

为什么出现计算属性功能

便于维护

这里我们举vue官网的例子

<div id="example">
  {{ message.split('').reverse().join('') }}
</div>

对于属性的附加运算完全可以这样写在模板里,不用多写什么方法。
但是模板设计的初衷是用于简单运算
如果模板中放入太多的逻辑会让模板过重以致难以维护

所以 任何复杂逻辑,你可以使用方法,计算属性或者watch
区别下边来讲

执行效率

计算属性是基于它们的响应式依赖进行缓存的。
只有他们依赖的值发生变化时才会重新求值。
相比之下:
每当触发重新渲染,调用方法将总会执行函数
这就可以看出计算属性的效率高效

开发效率

同样这里我们用vue官网的例子:

<div id="demo">{{ fullName }}</div>

同样是求根据firsttNamelastNamefullName

用watch(侦听属性)来做

export default {
  name: 'App',
 	data: {
    firstName: 'Foo',
    lastName: 'Bar',
    fullName: 'Foo Bar'
  },
  watch: {
    firstName: function (val) {
      this.fullName = val + ' ' + this.lastName
    },
    lastName: function (val) {
      this.fullName = this.firstName + ' ' + val
    }
  }
}

可以看出必须对两个属性都做监听,才能实现修改任意一个Name都可使fullName改变的需求

下面是用computed属性来做:

export default {
 name: 'App',
 data: {
    firstName: 'Foo',
    lastName: 'Bar'
  },
  computed: {
    fullName: function () {
      return this.firstName + ' ' + this.lastName
    }
  }
}

可以看到一个方法,一行代码就可以实现了。

可能有人会说:这里用模板语法不更好吗

确实,这里用模板语法更好,因为所需计算量少,而且用模板语法能够更加高效。但是这只是个例子。

好了,下边总结一下模板语法的应用场景

计算属性应用场景

  • 所需计算量较大,速度要求快
  • 业务逻辑较复杂,便于维护
  • 牵扯data属性较多,可以减少代码量同时效率较高

计算属性的语法😀

上面说了那么多概念,是时候说说语法了

computed(计算属性)和data平级

第一种:

computed:{
	dataName(){
		return data
	}
}

第二种:

computed:{
	dataName:{
		get(){
			return val
		},
		set(newValue){
			//属性变化时要对属性执行的操作
		}
	}
}

watch属性后面再详讲


看到这了,不点个赞再去敲bug

前端Vue计算属性在其依赖项之一发生更改时重新运行。计算属性的使用方法如下: ```html <template> {{ 方法名 }} </template> <script> export default { computed: { 方法名() { /* return 内容 */ }, }, } </script> ``` 计算属性可以用于过滤数组,并且与监听属性(watch)有一些区别。计算属性可以通过函数写法返回一个结果,用于呈现数据,而大多数计算属性都不需要设置setter方法。如果确定计算属性只用于呈现数据,可以使用简写形式,如下所示: ```javascript computed: { fullName() { return this.lastName + '-' + this.firstName; }, } ``` 而监听属性(watch)用于监听特定的数据变化,可以通过写函数来执行一些额外的逻辑。可以使用`@事件="方法"`或者`watch`来定义监听属性。监听属性还支持深度监听多级结构变化。 所以,前端Vue计算属性的更改可以通过修改计算属性的依赖项来实现重新计算。123 #### 引用[.reference_title] - *1* [前端vue计算属性](https://blog.csdn.net/weixin_46372074/article/details/124164831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* *3* [前端vue计算属性与监视属性](https://blog.csdn.net/weixin_46372074/article/details/124404058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GengMS_DEV

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值