computed,methods,watch有什么区别?

1. computed vs methods的区别

(1) computed计算属性是有缓存的

(2) methods是没有缓存的

//例子:
<div>
	change change change {{str()}} {{str()}} {{str()}}
</div>

computed:{
	change(){
		console.log('computed')
		return 111
	}
}

methods:{
	str(){
		console.log('methods')
		return 222
	}
}
//页面会显示:111 111 111 222 222 222
控制台会打印: computed methods methods methods 
(说明)

在这种简单的情况下,如此可见:computed的性能会比methods好

但是在特殊情况下,必选要用某个东西,比如:点击按钮要跳转页面的话,那只能用methods

2. computed vs watch的区别

(1) watch是监听,数据或者路由发生了改变才可以响应(执行)

根据如下2个案例总结出

(1) computed可以计算某一个属性的改变,如果某一个值改变了,计算属性会检测到会返回(监听一个值,当多个属性改变,都能计算到)
(2) watch是当前监听到数据改变,才会执行内部代码(监听多个属性,返回一个值)

//案例一:
<div>
	单价:<input v-model="num" type="number">	
	数量:<input v-model="price" type="number">
	总价:{{total}}
</div>
data(){
	return:{
		price:10,
		num:2,
	}
}
computed:{
	total(){
		return price * num
	}
}
:当输入框修改单价或者数量中任意一个,都能计算出总价(一对多)
//案例二:
<div>
	单价:<input v-model="num" type="number">	
	数量:<input v-model="price" type="number">
	总价:{{total}}
</div>
data(){
	return:{
		price:10,
		num:2,
		total:0
	}
}
watch:{
	num(newVal,oldVal){
		console.log('新值:',newVal)
		console.log('旧值:',oldVal)
		this.total = newVal * this.price
	},
	price(newVal,oldVal){
		console.log('新值:',newVal)
		console.log('旧值:',oldVal)
		this.total = newVal * this.num
	},
	//监听路由
	'route'(){}
}
:同时监听了单价和数据,当修改输入框中的任何一个,都能计算出总价(多对一)
//此时运行代码,控制台是打印不出任何东西,
原因是:watch监听属性是需要改变值才会监听,
watch监听属性
页面加一个输入框,去修改num,watch才会被监听,打印出数值
<input v-model="num" type="number">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值