Vue的watch和computed方法的使用及区别介绍


Posted in Javascript onSeptember 06, 2018

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" rel="external nofollow" >登录</a>
      <a href="#/register" rel="external nofollow" >注册</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的区别

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

总结

以上所述是小编给大家介绍的Vue的watch和computed方法的使用及区别介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript对象的使用和属性操作示例详解
Mar 02 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
Mar 31 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
很酷的星级评分系统原生JS实现
Aug 25 Javascript
详解Node.Js如何处理post数据
Sep 19 Javascript
js实现图片360度旋转
Jan 22 Javascript
Javascript中for循环语句的几种写法总结对比
Jan 23 Javascript
浅谈实现vue2.0响应式的基本思路
Feb 13 Javascript
Vue2.0点击切换类名改变样式的方法
Aug 22 Javascript
详解JavaScript事件循环机制
Sep 07 Javascript
对angular 监控数据模型变化的事件方法$watch详解
Oct 09 Javascript
vscode配置vue下的es6规范自动格式化详解
Mar 20 Javascript
Vue-component全局注册实例
Sep 06 #Javascript
Vue 监听列表item渲染事件方法
Sep 06 #Javascript
在Vue组件中获取全局的点击事件方法
Sep 06 #Javascript
jQuery实现基本动画效果的方法详解
Sep 06 #jQuery
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 #Javascript
Vue中使用clipboard实现复制功能
Sep 05 #Javascript
vue-cli3.0配置及使用注意事项详解
Sep 05 #Javascript
You might like
PHP错误处理函数
2016/04/03 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
Python实现AI换脸功能
2020/04/10 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
Python 如何在字符串中插入变量
2020/08/01 Python
python 如何区分return和yield
2020/09/22 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
幼师自我鉴定
2014/02/01 职场文书
小学教师师德反思
2014/02/03 职场文书
《春雨》教学反思
2014/04/24 职场文书
工程部文员岗位职责
2015/02/04 职场文书
家长意见和建议怎么写
2015/06/04 职场文书
关于做家务的心得体会
2016/01/23 职场文书
python本地文件服务器实例教程
2021/05/02 Python
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python