vue3中methods和computed的区别

在 Vue3 中, methods 和 computed 的区别主要体现在以下方面:

- 用途:

-  methods :用于定义组件中的方法,这些方法通常用于处理用户交互、事件响应、执行异步操作或调用 API 等,不具有缓存特性,每次调用都会执行方法中的代码。

-  computed :用于声明计算属性,它是具有缓存功能的。计算属性会根据其依赖的响应式数据自动计算并返回结果,只有在依赖的数据发生变化时,才会重新计算属性的值。适合用于根据已有的响应式数据计算和派生新的数据,或者处理复杂的逻辑运算和过滤等,在视图中多次使用的复杂计算也适合使用 computed 。

- 响应性:

-  methods 是非响应式的,它不会自动更新视图中的数据。

-  computed 是响应式的,当它依赖的响应式变量发生变化时,会自动更新视图中的数据。

- 调用方式:

- 在模板中使用 methods 定义的方法时,需要加上括号来调用,例如 {{ methodsFn() }} 。

- 而使用 computed 定义的计算属性时,不需要加括号,可以直接像访问属性一样使用,例如 {{ computedFn }} 。

例如,如果有一个包含商品对象数组的购物车,要计算购物车中商品的总价,使用 computed 属性会更合适:

<template>

  <div>

    <ul>

      <li v-for="item in cart" :key="item.id">{{item.name}}</li>

    </ul>

    <p>total price: {{ totalPrice }}</p>

  </div>

</template>

<script>

export default {

  data() {

    return {

      cart: [

        { name: "product one", price: 20 },

        { name: "product two", price: 30 },

        { name: "product three", price: 40 },

      ],

    };

  },

  computed: {

    totalPrice() {

      let sum = 0;

      this.cart.forEach((item) => {

        sum += item.price;

      });

      return sum;

    },

  },

};

</script>

而处理一些用户交互操作,如点击按钮触发的事件等,则适合使用 methods :

<template>

  <div>

    <p>{{ count }}</p>

    <button @click="increment">add</button>

  </div>

</template>

<script>

export default {

  data() {

    return {

      count: 0,

    };

  },

  methods: {

    increment() {

      this.count++;

    },

  },

};

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值