vue的 watch vs computed vs methods 区别

watch vs computed vs methods 区别

  • watch 是对数据进行监听,更多完成的是异步数据请求
  • methods 它是事件处理程序
  • computed 它是对数据进行重计算

computed-计算属性

  • 作用: 对data选项中的数据做计算
  • 解决问题:
    1,对数据计算的逻辑放在v里面 不合适
    2, 让模板结构不清晰
    3,计算属性中的key直接在模板中当做全局变量用
//html 代码
<div id="app">
    <h3> 计算属性-方法 </h3>
    <p> {{ newMsg }} </p>
    <hr>
    <h3> 计算属性存储器写法 </h3>
    姓: <input type="text" v-model = "firstName"> <br>
    名: <input type="text" v-model = "lastName"> <br>
    全名: <input type="text" v-model = "fullName"> <br>
  </div>


//js代码
new Vue({
    el: '#app',
    data: {
      msg: 'hello world',
      firstName: '',
      lastName: ''
    },
    methods: {
      
    },
    computed: {
      // 普通写法:是一个方法
      newMsg () {
        return this.msg.split('').reverse().join('')
      },
      fullName: {
        get () {  //获取值
          return this.firstName + this.lastName
        },
        set ( val ) {   //赋值
          // val  就是fullName对应input的value    
          this.firstName = val.slice( 0, 1 )
          this.lastName = val.slice( 1 )

        }
      }
    }
  })

watch 侦听属性

  • watch 是做什么的?
    1,watch是用来监听data中数据的变化,当数据改变式,我们可以做一些数据请求
    2,上拉加载、刷新
  • watch特点
    watch中key的名字就是data选项中数据 - 名字对起来

浅监听 - 监听一层

<div id="app">
    <button @click = "addCount"> + </button>
    <p> count的值为:{{ count }} </p>
</div>


//js代码
new Vue({
    el: '#app',
    data: {
      count: 0,
    },
    watch: { 
      count () { // 浅监听 - 监听一层
        console.log('触发')
        }
    },
    methods: {
      addCount () {
        this.count ++
      }
    },
  })

深度监听 - 监听数据多层结构

<div id="app">
    <input type="text" v-model = "obj.name">
</div>



//js代码
new Vue({
    el: '#app',
    data: {
      obj: {
        name: 'aaa'
      }
    },
    watch: { 
      obj: {
        deep: true, // 深度监听 - 监听数据多层结构
        handler () {
          console.log('obj发生了改变')
        }
      }
    }
  })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值