在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 前言创建一个Vue实例时,可以传入一个选项对象 const vm = new Vue({ data: { msg: 'hello' }, computed: {}, methods: {}, watch: {} }) 这个选项对象可以指定非常多的选项(或者说属性),和数据相关的选项有:包括但不限于 其中 2 基础用法用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Methods</title> <!-- 引入 vue.js --> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script> </head> <body> </body> <script> </script> </html> 2.1 methods 方法
<body> <div id="example"> <!-- 显示:a:1 --> <p>a:{{ plus() }}</p> </div> </body> <script> const vm = new Vue({ el: "#example", data: { a: 0, }, methods: { plus: function () { return this.a + 1; }, }, }); console.log(vm); // 查看控制台输出的vm,可以看到它有一个方法是:plus: ƒ (),⚠️注意是方法 console.log(vm.plus()); // 直接通过vm实例访问方法,输出:1 </script> 需要主动调用 2.2 computed 计算属性
<body> <div id="example"> <!-- 显示:a:1 --> <p>a:{{ plus }}</p> </div> </body> <script> const vm = new Vue({ el: "#example", data: { a: 0, }, computed: { plus: function () { return this.a + 1; }, }, }); console.log(vm); // // 查看控制台输出的vm,可以看到它有一个属性是:plus:1,⚠️注意是属性 </script> 乍一看好像 事实上通过打印vm实例以及访问方式已经体现出二者的一个不同之处:
另外,和方法不同的是,计算属性能够跟着它依赖的数据变化而进行响应式更新,即a变化时, 2.3 watch 侦听器
在 <body> <div id="example"> <!-- 显示:a:1 --> <p>a:{{ a }}</p> </div> </body> <script> const vm = new Vue({ el: "#example", data: { a: 0, }, watch: { a: function () { console.log("a发生了变化"); // 因为a的值变了,回调函数执行 console.log(this.a); }, }, }); vm.a = 1; // 这里直接手动改变a的值 </script> 3 三者的区别3.1 方法 VS 计算属性
|
methods | computed | |
---|---|---|
Vue实例化后成为vm实例的什么 | 成为vm实例上的方法 | 成为vm实例上的属性 |
能否根据依赖的数据进行响应式更新 | 不能,需要主动调用方法 | 能 |
能否缓存 | 不能,每次调用重新执行 | 能,依赖的数据不变,会从缓存中取值 |
如果某个值需要通过一个或多个数据计算得到,就使用计算属性
侦听属性主要是监听某个值的变化,然后进行需要的逻辑处理;此外当需要在数据变化时执行异步或开销较大的操作时,侦听属性就比较有用,具体例子可见vue文档-侦听器
到此这篇关于关于Vue的 watch
、computed
和methods
的区别汇总的文章就介绍到这了,更多相关Vue
的 watch
、computed
和methods
的区别内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界!
请发表评论