Vue中的计算属性与一个非常容易看懂的示例

一、 什么是计算属性?

  • 计算属性是vue实例中的一个配置选项:computed
  • 所有计算属性都以函数的形式写在Vue实例内的computed选项内,最终返回计算后的结果。

二、 为什么使用计算属性?

  • 在Vue应用中,在模板中双向绑定一些数据或者表达式,但是表达式如果过长,或者逻辑更为复杂时,就会变得臃肿甚至难以维护和阅读,因此可以用计算属性进行改写。例如:
  computed: {
                  ReversedText: function ()
                  {
                      return this.text.split(',').reverse().join(',')
                  }
  • 计算属性的本质就是辅助插值表达式来进行复杂逻辑运算的。

三、 计算属性与methods的区别?

  • 计算属性把新的数据缓存下来了,当其他的依赖数据没有发生改变,它调用的是缓存的数据,极大的提高程序的性能。
  • 如果写在methods里,页面每渲染一次就重新执行,所以每次都会重新计算。
  • 计算属性是具有缓存性质的,而methods中的方法,则不具备缓存的能力。

四、 计算属性的用法

  在一个计算属性里可以完成各种复杂的逻辑,包括运算、函数调用等,通常里面都是一个个计算相关的函数 , 一般就是用来通过其他的数据算出一个新数据 , 只要最终返回一个计算出来的结果即可。其完整语法如下:

	computed: {
       // "计算属性名" (){},
        "计算属性名": {
            set(){

            },
            get(){
                return}
        }
    }
  • 使用计算属性的默认方法 getter 来读取,里面可以执行一些逻辑或者直接return返回的值。
  • 也可以提供一个 setter 函数 , 当手动修改计算属性的值就像修改一个普通数据那样时,就会触发 setter函数,执行一些自定义的操作 。

以下示例实现了对输入框的实时响应和全名的动态更新。

	<body>
		<div id="root">
			姓:<input type="text" v-model="firstName"> <br/><br/>
			名:<input type="text" v-model="lastName"> <br/><br/>
			全名:<span>{{fullName}}</span> <br/><br/>
		</div>
	</body>

	<script type="text/javascript">
		Vue.config.productionTip = false 

		const vm = new Vue({
			el:'#root',
			//data对象定义了firstName和lastName的初始值为"张"和"三"。
			data:{
				firstName:'张',
				lastName:'三',
				x:'你好'
			},
			//computed属性中定义了一个fullName计算属性
			computed:{
				fullName:{
			    	//通过get方法将firstName和lastName拼接成完整的全名
					get(){
						console.log('get被调用了')//每次访问fullName时打印一条日志
						return this.firstName + '-' + this.lastName
					},
					//set方法在对fullName进行赋值时被调用
					set(value){
						console.log('set',value)
						//它将新的全名字符串拆分成姓和名,并分别更新firstName和lastName的值
						const arr = value.split('-')
						this.firstName = arr[0]
						this.lastName = arr[1]
					}
				}
			}
		})
	</script>


五、 如何使用计算属性与methods?

  使用计算属性还是 methods 取决于是否需要缓存,当遍历大数组和做大量计算时,应当使用计算属性;当需要数据实时发生变化时,适合用 methods。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

会举重的薯片

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值