计算属性 computed
侦听器or观察者 watch

一直以来对computed和watch一知半解,用的时候就迷迷糊糊的,今天仔细看了看文档,突然茅塞顿开,原来就是这么简单啊:

computed,通过别人改变自己

watch,通过自己改变别人

需要注意的是,computed会缓存数据,只有在满足以下两个条件时才会重新计算:

1、存在依赖型数据,即存在于VUE的data等对象的实下的实例数据

2、依赖型数据发生改变

如果不满足以上两个条件,computed不会重新计算,只会拿缓存的数据。而watch,只要调用他,他就会执行。

注意:computed会缓存数据,所以进行开销较大的操作时不适合用它。

非依赖型数据发生改变时,这是使用methods方法即可。

computed也可以通过自己改变别人

computed默认只有 getter ,不过在需要时也可以提供一个 setter:

computed: {fullName: {// getterget: function () {return this.firstName   ' '   this.lastName},// setterset: function (newValue) {var names = newValue.split(' ')this.firstName = names[0]this.lastName = names[names.length - 1]}}}

然后运行 vm.fullName = 'John Doe' 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。

什么时候使用

computed

1、其他依赖型数据发生改变,自身也要改变的时候

2、自身改变了,想要改变其他数据的时候,这时需要添加setter

watch

1、自身改变时改变其他数据

2、当需要在数据变化时执行异步或开销较大的操作时

原文地址:https://segmentfault.com/a/1190000012610140

更多专业前端知识,请上 【猿2048】www.mk2048.com

vue之computed和watch相关推荐

  1. vue中computed(计算属性)和watch在实现父子组件props同步时的实际区分

    vue中computed和watch的对比是一个很有意思的话题. 看过官网教程以后,我们往往更倾向多使用computed.computed优点很多,却在某些时候不太适用. 今天我们就稍微讨论一下,当我 ...

  2. vue方法调用失败后多次调用_浅析Vue中 computed / watch / methods的区别

    思考:请说下Vue中computed 和 watch 的区别( 面试题 ) 构造选项 computed / watch / methods computed ● computed 起初构想 在Vue的 ...

  3. vue,computed,计算属性

    vue,computed,计算属性 用法: computed: {didiFamily: {// getterget: function () {return this.data_i + ' ' + ...

  4. Vue中computed分析

    Vue中computed分析 在Vue中computed是计算属性,其会根据所依赖的数据动态显示新的计算结果,虽然使用{{}}模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的,在模板中放入太 ...

  5. Vue warn]: Computed property XXXl was assigned to but it has no setter.错误

    Vue warn]: Computed property "XXXl" was assigned to but it has no setter.错误 解决:直接修改HTML中的v ...

  6. VUE中computed 、created 、mounted 的先后顺序

    VUE中computed .created .mounted 的先后顺序 1.computed .created .mounted 的先后顺序 created => computed => ...

  7. vue的computed如果没有出现在模板里面,当它依赖的响应式属性发生变化,getter会触发吗?

    有知乎网友问: vue的computed如果没有出现在模板里面,当它依赖的响应式属性发生变化,getter会触发吗? 先说答案,不会触发! 原因说穿了其实也很简单,因为你没有在模板中使用该计算属性,所 ...

  8. [Vue warn]: Computed property “userInfo“ was assigned to but it has no setter.

    [Vue warn]: Computed property "userInfo" was assigned to but it has no setter. 一.报错信息 二.报错 ...

  9. 深究vue中computed顺序、watch顺序、响应次数

    文章目录 前言 深究步骤 1.代码 2.输出结果 3.分析过程 总结 前言 深究vue中computed顺序.watch顺序.响应次数 深究步骤 1.代码 <template><di ...

  10. Vue中computed计算属性和data数据获取的问题

    获取到数据(对象.数组),截取一部分显示到页面中,用computed计算属性来实现截取数据然后直接输出到页面. <div class="detailBox"><h ...

最新文章

  1. 远程桌面中Tab键不能补全的解决办法
  2. Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中
  3. 5 种方法教你用Python玩转histogram直方图
  4. c++ createtoolhelp32snapshot取进程路径_Linux进程间通信(上)之管道、消息队列实践
  5. poj 1637 Sightseeing tour——最大流+欧拉回路
  6. 跨考计算机报班,考研跨考的经验总结与分享
  7. [入门系列]什么是面向服务的体系结构(SOA)?
  8. oracle 12c实例,图解Oracle 12c 触发器实例
  9. python怎么做成app_自己怎么做App软件 自己制作APP教程
  10. 推荐一个网站:编程资料网 http://www.ourdev.net/
  11. 深入浅出了解OCR识别票据原理
  12. Zabbix安装配置详解
  13. pacman 查询_ArchLinux的包管理系统: pacman
  14. BZOJ 2429: [HAOI2006]聪明的猴子 MST
  15. 学习webworker
  16. python为什么运行不了_python怎么运行py文件
  17. 基于摄像头实现手写输入字符功能(视频手写)
  18. python工具类-sql操作封装
  19. matlab系列之(一)——利用matlab实现任意两个多项式相加
  20. 【Win 10 应用开发】在代码中加载文本资源

热门文章

  1. 【卷积码系列2】(n,k,m)卷积码的生成多项式矩阵系数转网格图描述(不使用MATLAB库函数)
  2. oracle编程基本语法,oracle编程基础语法
  3. FLV协议5分钟入门浅析
  4. shell实战之tomcat看门狗
  5. winScp中文乱码设置
  6. 根据自己的博客数据统计国内IT人群
  7. jenkins 发送邮件模板
  8. python 列表 字典 读写文件:pickle模块的基本使用
  9. COMET彗星(三)构建自己的COMET核心
  10. 8. Action过滤