vue常见面试题:computed和watch的区别是什么?

2023-11-19

根据vue官方文档可以看到,computed叫做计算属性,而watch叫做侦听器。

顾名思义,计算属性,是依赖其他变量计算出来得到的一个变量,也就是它受别的变量的影响,别的变量一变他就会变,比如

<script>
	export default({
		data(){
			return{
				num1:10,
				num2:20
			}
		},
		computed:{
			total(){
				return this.num1 + this.num2
				// 当num1或者num2改变的时候,total的值都会随着改变
			}
		}
	})
</script>

计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要 num和num2还没有发生改变,多次访问 total 计算属性会立即返回之前的计算结果,而不需要重新计算,这里举的例子只是简单的计算,通常也会用computed来做一些比较复杂的计算。

计算属性默认只有getter,上面其实就是一个getter,但是它也提供了setter,看下面的例子:

computed: {
  fullName: {
    // getter
    get: function () {
      return this.firstName + ' ' + this.lastName
    },
    // setter
    set: 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 也会相应地被更新。

watch叫做侦听器,当侦听的值发生改变时,其他变化会跟着改变或者有些操作会被触发,
当需要在数据变化时执行异步或开销较大的操作时,使用watch是最有用的

<script>
var watchExampleVM = new Vue({
  el: '#watch-example',
  data: {
    question: '',
    answer: 'I cannot give you an answer until you ask a question!'
  },
  watch: {
    // 如果 `question` 发生改变,这个函数就会运行
    question: function (newQuestion, oldQuestion) {
      this.answer = 'Waiting for you to stop typing...'
      this.debouncedGetAnswer()
    }
  },
  created: function () {
    // `_.debounce` 是一个通过 Lodash 限制操作频率的函数。
    // 在这个例子中,我们希望限制访问 yesno.wtf/api 的频率
    // AJAX 请求直到用户输入完毕才会发出。想要了解更多关于
    // `_.debounce` 函数 (及其近亲 `_.throttle`) 的知识,
    // 请参考:https://lodash.com/docs#debounce
    this.debouncedGetAnswer = _.debounce(this.getAnswer, 500)
  },
  methods: {
    getAnswer: function () {
      if (this.question.indexOf('?') === -1) {
        this.answer = 'Questions usually contain a question mark. ;-)'
        return
      }
      this.answer = 'Thinking...'
      var vm = this
      axios.get('https://yesno.wtf/api')
        .then(function (response) {
          vm.answer = _.capitalize(response.data.answer)
        })
        .catch(function (error) {
          vm.answer = 'Error! Could not reach the API. ' + error
        })
    }
  }
})
</script>

在这个示例中,使用 watch 选项允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue常见面试题:computed和watch的区别是什么? 的相关文章

  • 程序员必备:一款知识管理利器+效率工具

    回复 1024 送你一个特别推送 今天给大家推荐一款知识管理利器 其实也是一个不错的效率工具 我自己感觉确实很方便 也不错 所以才推荐给大家的 我比较喜欢这款工具的亮点是 它可以把我们自己记得笔记自动生成思维导图 这款工具是什么呢 它就叫
  • 无监督和有监督算法的区别

    无监督和有监督的理解方法有很多 主要可以从以下几方面来理解 1 无监督与监督学习的区别在于一个无教学值 一个有教学值 但是 个人认为他们的区别在于无监督学习一般是采用聚簇等算法来分类不同样本 而监督学习一般是利用教学值与实际输出值产生的误差
  • 机器学习——贝叶斯网络

    贝叶斯网络 贝叶斯网络 Bayesian Networks 也被称为信念网络 Belif Networks 或者因果网络 Causal Networks 是描述数据变量之间依赖关系的一种图形模式 是一种用来进行推理的模型 贝叶斯网络为人们提
  • JavaScript对象——数学对象

    说到JavaScript对象首先需要说一下内置对象 1 内置对象 内置对象 就是js语言自带的一些对象 这些对象供开发者使用 并提供了一些常用的或是最基本而必要的功能 属性或者方法 内置对象的优点 就是帮助开发者更快的进行开发 2 数学对象

随机推荐

  • 数字信号处理第五次试验:FIR数字滤波器设计与软件实现

    数字信号处理第五次试验 FIR数字滤波器设计与软件实现 前言 一 实验目的 二 实验原理与方法 三 实验环境 四 实验内容及步骤 五 实验结果截图 含分析 六 思考题 前言 为了帮助同学们完成痛苦的实验课程设计 本作者将其作出的实验结果及代
  • win10安装mujoco200,mujoco_py2.0.2.9,gym

    win10安装mujoco200 mujoco py2 0 2 9 gym 最近在学习强化学习 要用到这几个组件和引擎 尝试了很多方法才成功 于是写了两篇win10系统下安装mujoco和gym的总结 本文介绍的是在Win10系统下安装gy
  • 合并两个有序链表

    编程题 合并两个有序链表 保持链表顺序 例如 输入 链表1 1 gt 3 gt 5 gt 7 链表2 2 gt 4 gt 6 gt 8 输出 链表交集 1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 gt 8 public
  • 图解RGB565、RGB555、RGB16、RGB24、RGB32、ARGB32等格式的区别

    音视频实践学习 android全平台编译ffmpeg以及x264与fdk aac实践 ubuntu下使用nginx和nginx rtmp module配置直播推流服务器 android全平台编译ffmpeg合并为单个库实践 android
  • 移植5- uboot之tftp启动kernel

    1 在主机上安装tftp server 2 在uboot中使用setenv设置serverip和ipaddr 并保存saveenv tftp mem addr kernel name 2016 7 16 ok210kernel地址是多少 o
  • 二)PyTorch入门基础串讲(二)

    10 PyTorch与线性代数 范数 在泛函分析中 它定义在赋范线性空间中 并满足一定的条件 即 非负性 齐次性 三角不等式 常被用来度量某个向量空间 或矩阵 中的每个向量的长度或大小 零范数 1范数 2范数 欧氏距离 p范数 核范数 to
  • Hive练习题

    文章目录 Hive练习题 题目一 题目二 题目三 Hive练习题 题目一 学生表 STUDENT 的字段含义 SNO 代表学号 SNAME 代表学生姓名 SAGE 代表学生年龄 SSEX 代表学生性别 课程表 COURSE 的字段含义 CN
  • 4Sum

    Given an array S of n integers are there elements a b c and d in S such that a b c d target Find all unique quadruplets
  • 【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片

    个人主页 为梦而生 关注我一起学习吧 专栏 python网络爬虫从基础到实战 欢迎订阅 后面的内容会越来越有意思 往期推荐 Python爬虫开发基础 urllib库的基本使用 Python爬虫开发基础 XPath库及其基本用法 我们在之前已
  • 策略模式-

    定义 定义一系列的算法 把它们一个个封装起来 目的就是将算法的使用与算法的实现分离开来 从而算法的变化不会影响到使用算法的用户 适用场景 1 假如系统中有很多类 而他们的区别仅仅在于他们的行为不同 2 一个系统需要动态地在几种算法中选择一种
  • python pipline_python中sklearn的pipeline模块实例详解

    最近在看 深度学习 基于Keras的Python实践 魏贞原 这本书 书中8 3创建了一个Scikit Learn的Pipeline 首先标准化数据集 然后创建和评估基线神经网络模型 代码如下 数据正态化 改进算法 steps steps
  • web前端技术笔记(十六)bootstrap、表单正则和前端优化

    bootstrap bootstrap bootstrap 容器 bootstrap 栅格系统 栅格响应式布局案例 列偏移 bootstrap 隐藏类 bootstrap 按钮 bootstrap 表单 bootstrap 导航条 导航条案
  • 如何在Redis中实现事务

    事务介绍 事务 Transaction 是指作为单个逻辑工作单元执行的一系列操作 事务必须满足ACID原则 原子性 一致性 隔离性和持久性 简单来说 事务可能包括1 N条命令 当这些命令被作为事务处理时 将会顺序执行这些命令直到完成 并返回
  • 1.1【Mask-RCNN训练自己的数据集】---- Part One:制作数据集(全部流程总结+部分释义)

    写在前面 该实现基于Tensorflow Keras框架 在Ubuntu16 04下运行 官方github MaskRCNN demo 一 制作数据集 1 1 下载安装Labelme Labelme用来制作图像分割数据集 在安装Labelm
  • Python安装scikit-learn后import sklearn失败/不存在该模块

    作者在学习机器学习时 需要安装堪称ML入门必备的sklearn sklearn由3个部分组成 numpy scipy scikit learn 环境 python 3 6 8 基于Anaconda 编译命令 conda install nu
  • java 字符串拼接

    最常用的有4种方法 运算符 如果拼接的都是字符串直接量 则适合使用 运算符实现拼接 public static void main String args method1 字符串拼接 public static void method1 S
  • Android MediaPlayer+Stagefright框架(音频)图解

    在android原生的媒体播放器中是由mediaplayerservice来控制媒体播放器的 在mediaplayerservice中创建了mediaplayer 在mediaplayer java的native方法通过jni调用andro
  • java使用jdbc连接hive2出现Required field 'client_protocol' is unset! Struct:TOpenSessionReq

    java sql SQLException Could not establish connection to jdbc hive2 Required field client protocol is unset Struct TOpenS
  • 欢迎进入嵌入式羊圈博客导航一站式搜索(所有博客的汇总帖)

    目录 一 Linux 服务器相关 二 折腾系列 三 日常学习笔记 四 硬件工程师之路 五 T5L迪文屏的开发与应用 六 ZigBee的开发与应用 七 C语言高阶学习笔记 八 嵌入式通信 九 单线通讯 十 单片机 嵌入式 十一 STM8S学习
  • vue常见面试题:computed和watch的区别是什么?

    根据vue官方文档可以看到 computed叫做计算属性 而watch叫做侦听器 顾名思义 计算属性 是依赖其他变量计算出来得到的一个变量 也就是它受别的变量的影响 别的变量一变他就会变 比如 计算属性是基于它们的响应式依