data,methods,computed,watch之间的用法和区别

data,methods,computed,watch都是管理组件中的数据和行为的关键属性,它们之间的用法和区别如下所示:

1、data

  • 用法data 是用于定义组件中的初始数据的地方。它是一个函数或对象,返回组件中需要响应式跟踪的数据对象。
  • 区别:在 data 中定义的属性会被 Vue 实例进行响应式处理,当这些属性发生变化时,相关联的视图会进行更新。
data() {
  return {
    message: 'Hello!',
    count: 0,
  };
},

2、methods

  • 用法methods 用于定义组件中的方法,可以在模板或其他方法中调用这些方法。
  • 区别:Methods 是用于存储触发事件、执行逻辑操作或处理数据的函数。它们包含应用程序逻辑和方法,并且在需要时可以在模板中调用。
  • methods: {
      increment() {
        this.count++;
      },
      greet() {
        alert('Hello!');
      },
    },
    

    3、computed

  • 用法computed 是用于派生或计算基于现有数据的属性的地方。它是一个计算属性,根据其所依赖的数据动态生成新的属性值。
  • 区别:Computed 属性的值是基于其依赖的响应式数据动态计算得出的,并且会进行缓存,只有在依赖的响应式数据发生变化时才会重新计算。
  • computed: {
      fullName() {
        return this.firstName + ' ' + this.lastName;
      },
      reversedMessage() {
        return this.message.split('').reverse().join('');
      },
    },
    

4、watch

  • 用法watch 用于监听数据的变化,当指定的数据变化时,执行相应的回调函数。
  • 区别:与 computed 不同,watch 允许您观察并对数据的变化做出响应,而不是基于数据的值计算属性。它提供了更通用的方式来响应数据变化,可以执行异步操作或较复杂的逻辑。
  • //Vue2中watch属性的使用
    // 简单写法
    watch:{
        // 函数接受两个参数,用于监视指定数据变化
        // -newValue:数据变化后的结果
        // -oldValue:数据变化前的结果
        sum(newValue, oldValue){
            console.log('求和的值变化了',"变化后的值是"+newValue, '变化前的值是'+oldValue);
        }
    },
    
    
    //完整写法
    watch:{
      sum:{
          // 深度监视,因为watch默认只是浅层监视
          depp:true,
          // 在初始化完成之后就触发监听
          immediate:true,
          // 监视属性的回调
          handler(newValue, oldValue){
              console.log('求和的值变化了',"变化后的值是"+newValue, '变化前的值是'+oldValue);
          }
      }
    },
    
  • //Vue3中watch使用
    <template>
      <h2>我是TestA组件</h2>  
      <h2>当前求和为:{{sum}}</h2>
      <button @click="sum++">点击按钮sum +1</button>
    </template>
    
    <script>
    import { ref, watch } from 'vue'
    export default {
        name:'TestA',
        setup(){
            // 数据
            let sum = ref(0)
    
            //监视属性
            watch(sum, (newValue, oldValue)=>{
                // 回调函数形式
                console.log('求和的值变了', '变化后的值是'+newValue, '变化前的值是'+oldValue);
            })
            //返回对象
            return{
                sum
            }
            
        }
    }
    </script>
    
    <style>
    
    </style>
    

  • 另外:getset 是 JavaScript 中的属性访问器方法,用于获取和设置对象的属性值。这两个方法通常与对象的属性一起使用,允许你在读取或设置属性值时执行自定义的逻辑。

  • get方法:获取对象的属性值-只读

    const obj = {
      _value: 0,
      get value() {
        console.log("Getting the value");
        return this._value;
      }
    };
    
    console.log(obj.value); // 打印 "Getting the value",然后输出 0
    
  • set方法:设置对象的属性值-可修改

    const obj = {
      _value: 0,
      set value(newValue) {
        console.log("Setting the value to", newValue);
        this._value = newValue;
      }
    };
    
    obj.value = 42; // 打印 "Setting the value to 42"
    console.log(obj._value); // 输出 42
    

    一般来说,可以使用get方法计算属性值,根据对象的其他属性动态生成值;也可以通过set添加一些逻辑,确保设置的值符合特定条件

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值