Vue的watch和computed属性
Vue的watch属性
Vue的watch属性可以用来监听data属性中数据的变化
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script src="lib/vue.min.js"></script><script src="lib/vue-router-3.0.1.js"></script></head><body><div id="app"><input type="text" v-model="firstname" /></div><script type="text/javascript">var vm = new Vue({el:"#app",data:{firstname:"",lastname:""},methods:{},watch:{firstname:function(){console.log(this.firstname)}}})</script></body>
</html>复制代码
可以从上述代码中实践得知,输入框内的值变化多少次,控制台就会打印多少次
同时还可以直接在监听的function中使用参数来获取新值与旧值
watch:{firstname:function(newValue,OldValue){console.log(newValue);console.log(OldValue);}}
复制代码
其中第一个参数是新值,第二个参数是旧值
同时Watch还可以被用来监听路由router的变化,只是这里的监听的元素是固定的
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script src="lib/vue.min.js"></script><script src="lib/vue-router-3.0.1.js"></script><style type="text/css"></style></head><body><div id="app"><!--由于Vue-router的hash匹配原则所以我们需要在原定义的路径上加一个#号-->
<!-- <a href="#/login">登录</a><a href="#/register">注册</a>--><router-link to="/login" tag="span">登录</router-link><router-link to="/register">注册</router-link><router-view></router-view></div></body><script>var login={template:'<h1>登录组件</h1>'}var register={template:'<h1>注册组件</h1>'}var routerObj = new VueRouter({routes:[//此处的component只能使用组件对象,而不能使用注册的模板的名称{path:"/login",component:login},{path:"/register",component:register}]})var vm = new Vue({el:'#app',data:{},methods:{},router:routerObj,//将路由规则对象注册到VM实例上watch:{'$route.path':function(newValue,OldValue){console.log(newValue);console.log(OldValue);}}})</script>
</html>复制代码
计算属性Computed的作用
computed属性的作用与watch类似,也可以监听属性的变化
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script src="lib/vue.min.js"></script><script src="lib/vue-router-3.0.1.js"></script></head><body><div id="app"><input type="text" v-model="firstname" /><input type="text" v-model="lastname" /><input type="text" v-model="fullname" /></div><script type="text/javascript">var vm = new Vue({el:"#app",data:{firstname:"",lastname:""},methods:{},
/* watch:{firstname:function(newValue,OldValue){console.log(newValue);console.log(OldValue);}}*/computed:{fullname:function(){return this.firstname +"-"+this.lastname}}})</script></body>
</html>复制代码
只是他会根据他依赖的属性,生成一个属性,让vm对象可以使用这个属性
methods,watch,computed的区别
computed
属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用;methods
方法表示一个具体的操作,主要书写业务逻辑;watch
一个对象,键是需要观察的表达式,值是对应回调函数。主要用来监听某些特定数据的变化,从而进行某些具体的业务逻辑操作;可以看作是computed
和methods
的结合体;
转载于:https://juejin.im/post/5b8fe6f8f265da0aee3eedf6
Vue的watch和computed属性相关推荐
- Vue中的computed属性
1.前言 本篇是Vue中最常用到的API之一computed属性,转载信息如下: 作者:gunelark 链接:https://www.cnblogs.com/gunelark/p/8492468.h ...
- Vue中methods、computed和watch属性联系及区别
methods属性 当我们在Vue中想要调用函数或者方法时,可以在methods中调用方法,如下: <template><div><h1>methods属性< ...
- 实现 VUE 中 MVVM - step10 - Computed
看这篇之前,如果没有看过之前的文章,移步查看: 实现 VUE 中 MVVM - step1 - defineProperty 实现 VUE 中 MVVM - step2 - Dep 实现 VUE 中 ...
- Vue(ES6)中的data属性为什么不能是一个对象?
以下引官网原文:当一个组件被定义,data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例.如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 ...
- VUE自学日志05-计算属性和侦听器
## 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如,有一个嵌套数组对象: Vue.createApp({data() {re ...
- computed用发_Vue中的computed属性和nextTick方法
computed computed属性的实现原理 Vue实例初始化时,给data的每个属性(dataKey)都添加getter和setter方法 计算属性computed初始化时,提供的函数将作为对应 ...
- 关于vue中watch和computed
computed:计算属性 通过属性计算的来的属性 1.computed里面的函数建议有返回值,不建议去修改data中的属性 2.在使用computed中的方法时,是不需要加() 3.compu ...
- vue中Watch 和 Computed 的区别是什么?
Watch 和 Computed 的区别 监听属性watch: 不支持缓存,数据变,直接会触发相应的操作: watch支持异步: 监听的函数接收两个参数,第一个参数是最新的值,第二个参数是输入之前的值 ...
- Vue中 watch 和 computed 区别和使用场景
在 vue 的项目中,经常用到 watch 和 computed 这两个属性.两个都是数值改变触发改变的属性,他们之间有什么区别? 1.区别 Computed: computed: 是计算属性,依赖其 ...
最新文章
- 解决了一个遗留的Portlet奇怪问题
- 杨老师的新课!数学应用
- 我改了500个Bug,但是!!
- php5.0相等,关于php:3个相等
- 计算机信息管理专业教学改革,计算机信息管理专业实践教学改革探索
- linux基础(一)——切换到root用户和普通用户
- mysql if / case / limit / join / 数据类型 、oracle decode 及其它sql对比
- 【数论思维题】Enlarge GCD【Codeforces Round #511 (Div. 2)】
- PyQt:1个文件选择对话框实现既可以选择文件,也可以选择文件夹
- sina邮箱的发件服务器拒绝,向新浪sina邮箱发信常见退信说明
- Your cache folder contains root-owned files, due to a bug in npm ERR! previous versions of npm which
- 旅游|受不住热暑的炎烤 就到山上“凉拌”空气去
- 技术大佬都在看的几个公众号
- 转一篇经典音响文章《“摩机”宝典之如何“摩功放”》
- 这3种PDF合并的方法你一定要收藏
- 京东模拟登录,自动完成滑块验证
- VBA基础知识整理(文件操作)
- 凯文凯利:物联网联合AI大爆发
- 第三方网站接入微信JS-SDK的分享自定义设置,微信分享小图标以及标题
- 图解 mysql 运行原理