从“心”认识Vue(二): 计算属性和methods方法的区别

从“心”认识Vue(二): 计算属性和methods方法的区别


前言

开始学习vue了,但是编程的思想还是不容易转变过来,一两周过去了,只知道个大概,知其然而不知其所以然,打算开一个系列帖,重新认识下vue。


一、methods方法

vue中调用函数方法通常在methods中添加:

先看下面小例子:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">
    <h2>{{fullName()}}</h2>
    <h2>{{fullName()}}</h2>
    <h2>{{fullName()}}</h2>
</div>

<script src="node_modules/vue/dist/vue.min.js"></script>
<script>
  new Vue({
    el: "#app",
    data: {
      firstName: "Kobe",
      lastName: "Bryant"
    },
    methods:{
      fullName: function () {
      	console.log("fullName") 
        return this.firstName + " " + this.lastName
      }
    }
  })
</script>
</body>
</html>

上面结果大家都知道,h2里会显示Kobe Bryant 全名。

二、computed计算属性

我们再看下面小例子,与methods进行对比:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">
<!--  计算属性-->
<h2>{{getFullName}}</h2>
<h2>{{getFullName}}</h2>
<h2>{{getFullName}}</h2>

</div>

<script src="node_modules/vue/dist/vue.min.js"></script>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      firstName: "Kobe",
      lastName: "Bryant"
    },
    computed: {
      getFullName: function () {
      	console.log("getFullName") 
        return this.firstName + " " + this.lastName
      }
    }
  })
</script>
</body>
</html>

好像结果是一样的,并没有什么不同。
但是我们打开控制台发现,使用methods方法fullName被调用了三次,而计算属性中getFullName只被调用了一次!
在这里插入图片描述

  • 原因就在于计算属性多次调用时会调用缓存,只有当数值发生变化时才会重新调用,而methods方法只要触发时就会被调用
  • Vue官网中说道,对于任何复杂逻辑,你都应当使用计算属性。

数据属性变化时:

在这里插入图片描述

三、计算属性补充

其实上面我们只是用到了计算属性的getter方法,而计算属性还有setter方法,即为它赋值

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <div id="app">
<!--    计算属性使用时函数不用加括号-->
      {{getFullName}}
    </div>

    <script src="node_modules/vue/dist/vue.min.js"></script>
    <script>
      new Vue({
        el:"#app",
        data:{
          firstName:"Loebron",
          lastName:"James"
        },
        computed:{
 
          //完整的计算属性写法
          getFullName:{
          //函数名:匿名函数
          // getFullName:function(){
          //   return this.firstName + " " + this.lastName
          // }
             set:function(newValue){
               const names = newValue.split(" ");
               this.firstName = names[0]
               this.lastName = names[1]
             },
            get:function(){
              return this.firstName + " " + this.lastName
            }
          }
        }
      })
    </script>
</body>
</html>

而一般我们在使用过程中,很少用setter方法去赋值,不设setter属性,故删除setter方法,然后再进行进一步简写,就变成我们通常的写法,即上面第一次使用时的方法进行书写.


总结

  • 1.methods 与 computed 使用结果完全相同;
  • 2.computed使用时会调用缓存,多次调用时只进行执行第一次,只有在数据变化时才会重新调用。
  • 3.计算属性还有setter方法,而我们一般情况不使用它
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue中的计算属性(Computed Properties)和方法Methods)都可以用于在模板中处理数据和逻辑,但它们在使用方式和特性上有一些区别计算属性的特点和使用方式如下: 1. 缓存:计算属性会缓存计算结果,只有在其依赖的响应式数据发生变化时才会重新计算。这样可以避免重复计算,提高性能。 2. 声明式:计算属性是以属性的形式存在的,可以像普通属性一样在模板中使用,不需要显式调用。 3. 自动追踪依赖:Vue会自动追踪计算属性的依赖关系,当依赖的数据发生改变时,计算属性会自动重新计算。 4. Getter和Setter:计算属性可以定义getter和setter函数,可以在获取计算属性值时执行一些逻辑操作,也可以在设置计算属性值时执行一些额外的逻辑操作。 示例代码: ```javascript computed: { fullName() { return this.firstName + ' ' + this.lastName; } } ``` 方法的特点和使用方式如下: 1. 实时执行:方法会在每次调用时执行,不会进行缓存。每次使用方法时都会重新执行其中的逻辑。 2. 显式调用:方法需要在模板中通过方法名来调用,需要使用 `()` 运算符。 3. 适用于复杂逻辑:方法适用于需要做一些复杂的逻辑判断或处理的情况,可以包含任意的 JavaScript 代码。 示例代码: ```javascript methods: { getFullName() { return this.firstName + ' ' + this.lastName; } } ``` 综上所述,计算属性适用于对响应式数据进行计算和处理,并且在模板中可以像属性一样使用。而方法适用于需要进行实时计算或包含复杂逻辑的情况,需要在模板中显式调用。选择使用计算属性还是方法取决于具体的场景和需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值