博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue中computed(计算属性)、methods、watch的区别
阅读量:5359 次
发布时间:2019-06-15

本文共 2907 字,大约阅读时间需要 9 分钟。

实现效果:字符串的动态拼接

在这里插入图片描述

methods方法

html:

+
=

js:

let vm = new Vue({            el: '#app',            data: {                firstname: '',                lastname: '',                fullname: ''            },            methods: {                getFullName() {                    this.fullname = this.firstname + '+' + this.lastname;                }            }        });

watch方法

  • 值是函数:就是当你监控的家伙变化时,需要执行的函数,这个函数有两个形参,第一个是当前值,第二个是变化后的值
  • 值是函数名:不过这个函数名要用单引号来包裹
  • 值是包括选项的对象:选项有三个
  1.   第一个handler:其值是一个回调函数。即监听到变化时应该执行的函数。
  2.   第二个是deep:其值是true或false;确认是否深入监听。(一般监听时是不能监听到对象属性值的变化的,数组的值变化可以听到。)
  3.   第三个是immediate:其值是true或false;确认是否以当前的初始值执行handler的函数。
var vm = new Vue({   data: {     a: 1,     b: 2   },   watch: {     a: function (newVal, oldVal) {       console.log('new: %s, old: %s', newVal, oldVal)     },     // 方法名     b: 'someMethod',     // 选项的对象     c: {       handler: function (newVal, oldVal) { /* ... */ },       deep: true,       immediate: true     }   } })

实例:

html:

+
=

js:

let vm = new Vue({            el: '#app',            data: {                firstname: '',                lastname: '',                fullname: ''            },            watch: {                // 使用这个属性,可以监听 data 中指定数据的变化,                // 然后触发 watch 中对应的 function 处理函数                // 其中传参:第一个(newVal)是指改变后的值,第二个(oldVal)是原值                firstname: function (newVal, oldVal) {                    // this.fullname = this.firstname + this.lastname;                    this.fullname = newVal + '+' + this.lastname;                },                lastname: function (newVal, oldVal) {                    // this.fullname = this.firstname + this.lastname;                    this.fullname = this.firstname + '+' + newVal;                }            }        });

注意:虽然看起来 keyup 在这个例子中显得更简单,但是 watch 在一些无键盘点击操作时要监听改变会显得很有用。例如:监听路由地址改变 、购物车添加商品(因为数字变动不方便用事件监听)。还有 watch 不要用箭头函数的方式获取 newVal、oldVal,这样会导致 this 绑定错误

computed方法

html:

+
=

js:

let vm = new Vue({        el: '#app',        data: {            firstname: '',            lastname: ''        },        computed:{            // 在 computed 中,可以定义一些属性,这些属性叫做【计算属性】,            // 本质就是一个方法,只是使用这些计算属性的时候,是把他们的名称,            // 之间当做属性来使用,并不会把计算属性当做方法调用;            // 注意 1:计算属性在引用的时候,不要加小括号调用,直接当做普通属性去使用            // 注意 2:只要计算属性,这个 function 中,所用的任何 data 中的数据发生了变化,就会            // 立即重新计算这个计算属性的值,否则不会对计算属性从新求值            // 注意 3:计算属性的求值结构,会被缓存起来,方便下次直接使用            fullname:function () {                return this.firstname+'+'+this.lastname            }        }    });

三者区别

  • 计算属性(computed):一定要返回一个值,属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算,主要当做属性来使用,适合简单的计算;
  • 方法(methods):表示一个具体的操作,主要书写业务逻辑,通过调用执行;
  • 监听(watch):一个对象,键是需要观察的表达式,值是对应回调函数。主要用来监听某些特定数据的变化,从而进行某些具体的业务逻辑操作;可以看做 computed 和 methods 的结合体

 

转载于:https://www.cnblogs.com/ysx215/p/11436374.html

你可能感兴趣的文章
c#中的Cache缓存技术
查看>>
Oracle 给已创建的表增加自增长列
查看>>
《DSP using MATLAB》Problem 2.17
查看>>
if 循环
查看>>
uva 111 History Grading(lcs)
查看>>
Python学习week2-python介绍与pyenv安装
查看>>
php判断网页是否gzip压缩
查看>>
一个有意思的js实例,你会吗??[原创]
查看>>
sql server中bit字段实现取反操作
查看>>
Part3_lesson2---ARM指令分类学习
查看>>
Django mysql 改用pymysql 驱动
查看>>
jQuery拖拽原理实例
查看>>
MyEclipse7.5注册码
查看>>
个人作业1--数组
查看>>
十天冲刺-02
查看>>
HDU1024_Max Sum Plus Plus
查看>>
【并行计算】基于OpenMP的并行编程
查看>>
.Net发出图片Request请求
查看>>
System V IPC相关函数
查看>>
【读书】个人购书经验总结
查看>>