遇见 vue.js --------阿文的vue.js学习笔记(5)------计算属性和监听器

**
新学习新征程,我们一起踏上学习 vue.js的新长征

遇见 vue.js --------阿文的vue.js学习笔记(1)-----初识vue.js

遇见 vue.js --------阿文的vue.js学习笔记(2—1)----- 基本使用 [1]

遇见 vue.js --------阿文的vue.js学习笔记(2—2)----- 基本使用 [2]

… … …

遇见 vue.js --------阿文的vue.js学习笔记(目录)

       关注我,我们一起学习进步。

**

1、计算属性

      模板的设计初衷是为了 用于简单运算。但是一旦放入的逻辑过多就会导致模板过重难以维护,所以这个时候就需要我们使用计算属性

我们先来简单的举个例子来了解以下:
在这里插入图片描述
执行结果:你可以看出我们为了实现字母反转的效果,在第一个在花括号内写了很长的东西,但是第二个p内利用了计算属性之后,看起来是十分的简洁
在这里插入图片描述
    因为第一个传入的就是原本的数据msg,然后在其后面添加了三个方法将其反转; 我们的第二个是声明了一个计算属性 reversmsg 通过属性里面的 getter函数来实现反转的效果。
    并且我们的 reversmsg 属性的值始终取决于我们 data 里面 msg的值。他们二者息息相关,因为计算属性,里面就是 通过重新计算传入的 msg 的属性而得到的新的属性。

通常计算属性的写法为:

computed:{
    
    
  声明新的属性名:function(){
    
    
		计算方法		
			}
	}

computed:{
    
    
	声明新的属性名:{
    
    
		getfunction(){
    
    
			计算方法
		}
	}
}

第二种写法是最完整的写法,
getgetter 函数

(1)、比较 计算属性 和 方法

       同样的一个函数,我们可以将其设置为属性或者方法。并且二者都能得到相同的效果。但是我们的计算属性是基于它们的响应式依赖进行缓存的。意思就是如果用我们的 计算属性,只要我们的原数据 msg 没有发生改变,那么多次访问 我们的 计算属性 resersmsg 时,它会立刻返回之前计算的结果,而不会再次执行内部的函数;
        但是如果写作方法,每一次渲染都会执行内部的函数。

举个例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js"></script>
	</head>
	<body>
		<div id="a">
			{
    
    {
    
    reversmsg}}
			{
    
    {
    
    reversmsg}}
			{
    
    {
    
    reversmsg}}
			<br>
			{
    
    {
    
    fn()}}
			{
    
    {
    
    fn()}}
			{
    
    {
    
    fn()}}
		</div>
		
		<script>
			var a = 100;
			var b = 100;
			new Vue({
    
    
				el:"#a",
				data:{
    
    
					
				},
			//计算属性
				computed:{
    
    
					reversmsg:{
    
    
						get:function(){
    
    
							a++;
							return a;
						}
					}
				},
			//方法
				methods:{
    
    
					fn:function(){
    
    
						b++;
						return b;
					}
				}
			})
		</script>
	</body>
</html>

执行结果: 这里你可以发现因为我们最先传入的原数据a是没有改变的 ,所以在我们的计算属性里,只有第一次调用了 内部的 函数a++ 得到a=101.于是101 别缓存,所以后面的调用=该计算属性,都是直接调用的缓存之后的数据,所以一直都是101;但是我们的方法 methods,每次调用 都会对内部函数进行调用,所以每次都会执行a++,所以值会一直更改
在这里插入图片描述

(2)watch 监听属性

        你可以简单的理解为监听一个元素,当监听的这个元素发生变化之后,执行里面写的函数。

简单举个例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js"></script>
	</head>
	<body>
		<div id="a">
			<input type="text" v-model="xing">
			{
    
    {
    
    xingming}} <br />
			<input type="text" v-model="ming">
		</div>
		
		<script>
			
			new Vue({
    
    
				el:"#a",
				data:{
    
    
					xing:"李",
					ming:"云龙",
					xingming:"李云龙"
				},					
				watch:{
    
    
					xing:function(value){
    
    
						this.xingming = value + this.ming
					},
					ming:function(value){
    
    
						this.xingming = this.xing + value
					}
				}				
			})
		</script>
	</body>
</html>

执行结果:就是监听的数据发生更改
在这里插入图片描述
在有时候 用watch 比用计算属性 的代码更繁冗,
就好比上面的例子,我们的 watch 部分可以 更改为

				computed:{
    
    
					xingming:function(){
    
    
						return this.xing + this.ming
					}
				}

效果是一样的。

        但是当要在数据变化时执行异步或开销较大的操作时,我们的watch方式是最有用的

**

     关注 校园君有话说 公众号 ,回复 web前端 免费领取50G 前端学习资料 一份 ,我们一起学习进步吧。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45948983/article/details/108723359
今日推荐