Vue的computed和watch的使用和区别

一、computed:

  模板内表达式非常便利,可用于简单计算,当模板内放入太多的逻辑时,模板会过重且难以维护;可以使用computed替代

  计算属性是基于它们的响应式依赖进行缓存的,当依赖的响应式数据发生改变时,计算属性才会改变;

  如果时非响应式(未在data中声明)数据,计算属性是不会发生改变的;

  计算属性将被混入到vue实例中,所有的getter和setter的this上下文自动绑定到vue实例中

// 计算属性 VS 方法// html
<div>{{ msg }}</div>  // 计算属性
<div>{{ res() }}</div>  // 方法
// js
const vm = new Vue({
   el: '#app',
   data: {
       name: 'zs'
    },
    // 计算属性
    computed:{
       msg: {
           get() : {
               return this.name
           },
           set(val):  {
               // val 是修改msg时触发并赋值的最新值
           }
       }
    },
    //  方法
    method: {
      res(): {
         return this.name         //  方法和计算属性效果一样,不同的是计算属性有缓存,方法是每次触发都要进行一次调用,计算属性是只有响应式依赖改变了才会触发
      }
    }
})

二、watch 侦听器

  相对于侦听器,大多数情况下使用computed,但有时也需要一个自定义的侦听器watch,场景: 当数据在数据变化时,执行异步或者开销比较大的操作时,使用侦听器

const vm = new Vue({
         el: '#app',
         data: {
            question: 'old-Q'
         },
         watch: {
           // 如果question发生改变,则这个函数就会触发
            question: function(newQuestion, oldQuestion){
                 // newQuestion是question改变后的新值
                // oldQuestion是question改变之前的值
            }
         }
})
// watch是侦听一个参数,当这个参数发生变化时影响其他数据的变化,并且可以获得该参数的新值和旧值进行相应的计算

官方文档: https://cn.vuejs.org/v2/guide/computed.html

(0)

相关推荐

  • Vue的computed计算属性

    computed可定义一些函数,这些函数叫做[计算属性] 只要data里面的数据发生变化computed会同步改变 引用[计算属性]时不要加  () ,应当普通属性使用 例:console.log(t ...

  • vue多页面与单页面开发的区别。

    进入一家新的公司,要开发移动端app项目,前端技术选型时前端组长选的是vue的多页面开发,当时很蒙,vue不是单页面开发吗?咋出来多页面的.接触之后才发现确实存在也挺简单的,省去了路由表的配置.那就给 ...

  • 【Vue】 生命周期, created,mounted, methods , computed , watched

    生命周期: 用通俗的语言来说,就是Vue中实例或者组件从创建到消灭中间经过的一系列过程. beforecreate : 一般使用场景是在加 loading事件 的时候 created :处于loadi ...

  • drf vue项目搭建

    drf vue项目搭建

  • vue-admin-beautiful、Vue Admin Pro、Vue Admin Plus

    vue-admin-beautiful 是一款基于 vue+element-ui 的绝佳的中后台前端开发管理框架(基于 vue/cli 4 最新版,同时支持电脑,手机,平板). Admin Pro拥有 ...

  • setTimeout在vue中的正确使用

    笔者最近因为公司需求开发使用vue和jquery开发抓娃娃H5极简小游戏,使用到setTimeout函数.遇到了1个坑: 在vue的某个方法(点击后执行) setTimeout(this.end(), ...

  • 7个实用的 Vue.js 工具和库

    前端技术优选 昨天 以下文章来源于前端迷社区 ,作者小迷妹 大家好,我是为前端娱乐圈操碎了心的小迷妹,正宗前端开发一枚,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效 ...

  • 电商系统研究学习:前端架构 vue

    电商系统研究学习:前端架构&#160;vue

  • Vue 打包的静态文件不能直接运行的原因及解决办法

      更新时间:2020年11月19日 11:24:44   作者:rxliuli    问题 吾辈使用 vue-cli 直接生成的 vue 模板项目,在模板之上继续开发的.然而在使用 npm run ...