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 13 Javascript
node.js中的fs.symlinkSync方法使用说明
Dec 15 Javascript
javascript中使用new与不使用实例化对象的区别
Jun 22 Javascript
javascript数组去重方法分析
Dec 15 Javascript
详解js的六大数据类型
Dec 27 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
Jan 29 Javascript
Vue动画事件详解及过渡动画实例
Feb 09 Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 Javascript
JS访问对象两种方式区别解析
Aug 29 Javascript
解决vue项目axios每次请求session不一致的问题
Oct 24 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 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
js替代copy(示例代码)
2013/11/27 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
Python如何读取MySQL数据库表数据
2017/03/11 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
夜班门卫岗位职责
2013/12/09 职场文书
八年级音乐教学反思
2014/01/09 职场文书
七年级政治教学反思
2014/02/03 职场文书
卫生安全检查制度
2014/02/04 职场文书
公司办公室岗位职责
2014/03/19 职场文书
2015年招聘工作总结
2014/12/12 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
前台接待员岗位职责
2015/04/15 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
母亲节感言
2015/08/03 职场文书
《社戏》教学反思
2016/02/22 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
导游词之凤凰古城
2019/10/22 职场文书
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android
使用MybatisPlus打印sql语句
2022/04/22 SQL Server