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数组组合成字符串的脚本
Jan 06 Javascript
jQuery asp.net 用json格式返回自定义对象
Apr 07 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 Javascript
AngularJS实现单独作用域内的数据操作
Sep 05 Javascript
js判断浏览器是否支持严格模式的方法
Oct 04 Javascript
简单谈谈JS数组中的indexOf方法
Oct 13 Javascript
javascript轮播图算法
Oct 21 Javascript
Vuex之理解state的用法实例
Apr 19 Javascript
详解Angular2学习笔记之Html属性绑定
Jan 03 Javascript
vue cli4下环境变量和模式示例详解
Apr 09 Javascript
js实现点击选项置顶动画效果
Aug 25 Javascript
JavaScript 判断浏览器是否是IE
Feb 19 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
Tornado 多进程实现分析详解
2018/01/12 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
非功能性需求都包括哪些方面
2013/10/29 面试题
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
大学生毕业自我鉴定范文
2013/09/19 职场文书
土木工程个人自荐信范文
2013/11/30 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
综治工作汇报材料
2014/10/27 职场文书
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python
Win11怎么修改电源模式?Win11修改电源模式的方法
2022/04/05 数码科技