Vue3基础+代码语法+例子大全(二)——data property、methods、计算属性和侦听器

本文深入讲解Vue3中Data Property和Methods的用法,详细阐述计算属性的创建、缓存机制、Setter以及避免的副作用。此外,介绍了侦听器的基本应用、深层监听、即时回调及其触发时机,对比分析计算属性与侦听器的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考官网:Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)

目录

三、Data Property和方法

1、Data Property

2、方法

四、计算属性和侦听器

1、计算属性

(1)基本例子

(2)计算属性缓存 VS 方法

(3)计算属性的 Setter

(4)计算函数不应有副作用

(5)避免直接修改计算属性值

2、侦听器

(1)基本例子

(2) 深层侦听器

(3)即时回调的侦听器

(4)回调的触发时机

(5)this.$watch()

(6)停止侦听器

3、计算属性 VS 侦听器


三、Data Property和方法

1、Data Property

组件的data选项是一个函数。Vue 会在创建新组件实例的过程中调用此函数。它应该返回一个对象,然后Vue 会通过响应性系统将其包裹起来,并以 $data 的形式存储在组件实例中。为方便起见,该对象的任何顶级 property 也会直接通过组件实例暴露出来:

export default {
  data() {
    return {
      count: 1
    }
  },

  // `mounted` 是生命周期钩子,之后会讲到
  mounted() {
    // `this` 指向当前组件实例
    console.log(this.count) // => 1

    // 数据属性也可以被更改
    this.count = 2
  }
}

2、方法

要为组件添加方法,需要用到 methods 选项。它应该是一个包含所有方法的对象:

export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
    }
  },
  mounted() {
    // 在其他方法或是生命周期中也可以调用方法
    this.increment()
  }
}

Vue 自动为 methods 中的方法绑定了永远指向组件实例的 this。这确保了方法在作为事件监听器或回调函数时始终保持正确的 this 指向。在定义 methods 时应避免使用箭头函数,因为箭头函数的指向是静态的,这会阻止 Vue 绑定恰当的 this 指向。

这些 methods 和组件实例的其它所有 property 一样可以在组件的模板中被访问。在模板中,它们通常被当做事件监听使用:

<button @click="increment">{
  { count }}</button>

在上面的例子中,increment 方法会在 <button> 被点击时调用。

四、计算属性和侦听器

1、计算属性

(1)基本例子

模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。例如:

<script>
export default{  //导出对象
  data(){  //data会默认进行解析
    return{
      message:"helloWorld",
    }
  }
};
</script>

<template>
  <div>
      <p>{
  {message}}</p>
      <!-- 翻转 -->
      <p>{
  {message.split('').reverse().join('')}}</p>
  </div>
</template>

使用计算属性来描述依赖响应式状态的复杂逻辑。这是重构后的示例:

<script>
export default{  //导出对象
  data(){  //data会默认进行解析
    return{
      message:"helloWorld",
    }
  },
  computed:{ //计算属性:只要依赖值不变,就不会重新计算
    reverseMsg:function(){
      return this.message.split('').reverse().join('')
    }
  }
};
</script>

<template>
  <div>
      <p>{
  {message}}</p>
      <!-- 翻转 -->
      <p>{
  {reverseMsg}}</p>
  </div>
</template>

 所以,对于任何包含响应式数据的复杂逻辑,都应该使用计算属性。

(2)计算属性缓存 VS 方法

若将同样的函数定义为一个方法而不是计算属性,两种方式在结果上确实是完全相同的,然而,不同之处在于计算属性值会基于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值