zoukankan      html  css  js  c++  java
  • 2020.10.13 vue中watch和computed属性的区别

    既能用computed 实现又可以用 watch 监听来实现的功能,推荐用 computed,重点在于 computed 的缓存功能

    computed计算属性是用来声明式的描述一个值依赖了其它的值,当所依赖的值或者变量改变时,计算属性也会跟着改变;

    watch 监听的是已经在 data 中定义的变量,当该变量变化时,会触发 watch 中的方法;

    1. computed 根据一个现有数据去生成一个新数据,并且这两个数据会永久的建立关系,还会建立缓存,当无关数据改变的时候,不会重新计算而是直接使用缓存中的值

    fullName 不需要在 data 中声明

    <div id="app">
      <p>{{fullName}}</p>
    </div>
     
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          firstName: 'yao',
          lastName: 'lei'
        },
        computed: {
          fullName() {
            return this.firstName + this.lastName
          }
        }
      })
    </script>

    2.watch 更像是一个 data 的数据监听回调,当依赖的 data 的数据变化,执行回调,在方法中会传入 newVal 和 oldVal。可以提供输入值无效,提供中间值 特场景。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。如果你需要在某个数据变化时做一些事情,使用watch。

    watch监听的是data中定义的变量

    <template>
      <div class="hello">
          {{fullName}}
          <button @click="setNameFun">click</button>
      </div>
    </template>
     
    <script>
    export default {
        data() {
            return {
                firstName: '',
                lastName: ""
            }
        },
        props: {
          msg: String
        },
        methods: {
            setNameFun() {
                this.firstName = "";
                this.lastName = ""
            }
        },
        computed: {
            fullName() {
                return this.firstName + ' ' + this.lastName
            }
        },
        watch: {
            firstName(newval,oldval) {
              console.log(newval)
              console.log(oldval)
            }
        }
    }
    </script>

    总结: 

    1.如果一个数据依赖于其他数据,那么把这个数据设计为computed的  

    2.如果你需要在某个数据变化时做一些事情,使用watch来观察这个数据变化

     

      

  • 相关阅读:
    AngularJs学习笔记(一)----------关于数据绑定
    水平垂直居中常见方式总结
    左边固定,右边自适应常见方式总结
    关于JavaScript的设计模式--笔记(1)
    SQL 分组后获取其中一个字段最大值的整条记录
    .NET交流 259868462
    C#可以自动在后台为属性创建字段
    委托的一个实例
    encodeURIComponent()对js参数进行编码,防止错误值
    相同的sql 分页查询结果
  • 原文地址:https://www.cnblogs.com/yaolei0422/p/13809585.html
Copyright © 2011-2022 走看看