面试题: Vue中的 computed 和 watch的区别

2023-11-19

computed

computed看上去是方法,但是实际上是计算属性,它会根据你所依赖的数据动态显示新的计算结果。计算结果会被缓存,computed的值在getter执行后是会缓存的,只有在它依赖的属性值改变之后,下一次获取computed的值时才会重新调用对应的getter来计算


1)下面是一个比较经典简单的案例

<template>
  <div class="hello">
      {{fullName}}
  </div>
</template>

<script>
export default {
    data() {
        return {
            firstName: '飞',
            lastName: "旋"
        }
    },
    props: {
      msg: String
    },
    computed: {
        fullName() {
            return this.firstName + ' ' + this.lastName
        }
    }
}
</script>复制代码

注意

在Vue的 template模板内({{}})是可以写一些简单的js表达式的很便利,如上直接计算 {{this.firstName + ' ' + this.lastName}},因为在模版中放入太多声明式的逻辑会让模板本身过重,尤其当在页面中使用大量复杂的逻辑表达式处理数据时,会对页面的可维护性造成很大的影响,而 computed 的设计初衷也正是用于解决此类问题。

应用场景

适用于重新计算比较费时不用重复数据计算的环境。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例。如果一个数据依赖于其他数据,那么把这个数据设计为computed


watch

watcher 更像是一个 data 的数据监听回调,当依赖的 data 的数据变化,执行回调,在方法中会传入 newVal 和 oldVal。可以提供输入值无效,提供中间值 特场景。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。如果你需要在某个数据变化时做一些事情,使用watch。
<template>
  <div class="hello">
      {{fullName}}
      <button @click="setNameFun">click</button>
  </div>
</template>

<script>
export default {
    data() {
        return {
            firstName: '飞',
            lastName: "旋"
        }
    },
    props: {
      msg: String
    },
    methods: {
        setNameFun() {
            this.firstName = "大";
            this.lastName = "熊"
        }
    },
    computed: {
        fullName() {
            return this.firstName + ' ' + this.lastName
        }
    },
    watch: {
        firstName(newval,oldval) {
          console.log(newval)
          console.log(oldval)
        }
    }
}
</script>复制代码


总结: 

1.如果一个数据依赖于其他数据,那么把这个数据设计为computed的  

2.如果你需要在某个数据变化时做一些事情,使用watch来观察这个数据变化

转载于:https://juejin.im/post/5c9990d6f265da60ea146d21

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

面试题: Vue中的 computed 和 watch的区别 的相关文章

随机推荐

  • No implementation found for int com.baidu.mapsdkplatform.comjni.tools.JNITools.initClass(java.lang.O

    今天又有一个历史项目需要维护 发现百度地图只显示网格 没有图像出来 感觉可能是签名问题 但是下载来的代码中只有那一个签名 所以干脆把百度地图的东西都替换掉 替换完一运行 直接崩溃了 E NativeLoader found libBaidu
  • 【Unity灯光与渲染技术】Global Illumination全局光照

    本系列主要参考Unity灯光与渲染技术教程Unity Lighting And Rendering 同时会加上一点个人实践过程和理解 分割线 这篇文章主要讲全局光照 在看教程的时候就有一个点不是很理解 就是作者开启物体的static这个选项
  • 字母大小写转换(python实现)

    python实现大小写转换主要用lower和upper函数 lower 将字符串中的所有大写字母转化为小写字母 upper 将字符串中的所有小写字母转化为大写字母 s input 输入一个字符串 print s upper 输入 i lov
  • HTML5游戏实战(2):90行代码实现捕鱼达人

    捕鱼达人是一款非常流行的游戏 几年里赚取了数以千万的收入 这里借用它来介绍一下用Gamebuilder CanTK开发游戏的方法 其实赚钱的游戏未必技术就很难 今天我们就仅用90来行代码来实现这个游戏 CanTK Canvas ToolKi
  • MySQL 分区表设计

    MySQL 分区表设计 1 分区表设计方案 当设计 MySQL 分区表时 需要考虑以下几个方面 分区策略 分区字段 分区数量和分区函数 下面是一个详细的示例 展示了如何设计和执行分区表的增删改查操作 设计分区表 考虑一个订单表的例子 我们可
  • 【DP】拔河比赛

    题目 一个学校举行拔河比赛 所有的人被分成了两组 每个人必须 且只能够 在其中的一组 要求两个组的人数相差不能超过1 且两个组内的所有人体重加起来尽可能地接近 输入 输入数据的第1行是一个n 表示参加拔河比赛的总人数 n lt 100 接下
  • 最新实战-基于SSM的自习室预订座位占座管理系统-JAVA.VUE【数据库设计、开题报告】

    功能介绍 项目含有管理员和学生两种角色 座位分类管理 管理员可以管理座位分类信息 可以添加 修改 删除座位分类信息 学生信息管理 管理员可以对学生信息进行查询和修改操作 座位信息管理 管理员可以对座位信息进行修改 查询操作 座位预约管理 管
  • 通过示例学习 JavaScript 运算符 - 逻辑、比较、三元和更多 JS 运算符

    JavaScript 有许多运算符 可用于对值和变量 也称为操作数 执行操作 根据这些 JS 运算符执行的操作类型 我们可以将它们分为七组 目录
  • SeetaFace编译成功(有windows及Android源码)

    声明 由于本人水平有限 所提供的代码 dll so等必然存在很多问题 仅用于学习 不适合工业级使用 请谨慎使用 如果造成损失 责任自负 对齐 这张照片第3个人的特征点检测有点问题 研发人员很快修正了 赞一个 下面是人脸比对 准确率还是可以接
  • EF Core + sql2005报错 An error occurred while updating the entries. See the inner exception for detail

    问题 将原来 Net4 0 EF sql2008系统迁到 NetCore EF SQL 2005上 在保存数据时出现 An error occurred while updating the entries See the inner ex
  • Kernel lockdown is enabled and set to ‘confidentiality‘.

    执行bpftrace时遇到的问题 度娘了好久没有适合我的 后来看到一篇 bpftrace 执行失败 Operation not permitted 不是因为 kernel lockdown By李佶澳 他是参考官网的操作 bpftrace
  • WiFi网络编程(带OTA功能)

    参考 WiFi网络编程 上 地址 https www bilibili com video BV1VV411b75h spm id from 333 788 recommend more video 0 参考 WiFi网络编程 下 地址 h
  • 云原生之使用Docker部署Firefox浏览器

    云原生之使用Docker部署Firefox浏览器 一 Firefox浏览器介绍 1 1 Firefox简介 1 2 Firefox特点 二 本次实践介绍 2 1 本地环境规划 2 2 本次实践简介 三 本地环境检查 3 1 检查Docker
  • 头歌|Hadoop单点部署,安装和管理

    第1关 配置开发环境 JavaJDK的配置 mkdir app cd opt tar zxvf jdk 8u171 linux x64 tar gz mv jdk1 8 0 171 app vim etc profile vim 添加至文件
  • 应用级缓存

    缓存介绍 缓存 让数据更接近使用者 目的是让访问速度更快 工作机制是先从缓存中读取数据 如果没有 再从慢速设备上读取实际数据并同步到时缓存 缓存命中率 缓存回收策略 JAVA缓存类型 堆缓存 堆外缓存 磁盘缓存 分布式缓存 多级缓存
  • 电脑桌面图标不见了?三招教你轻松找回

    电脑桌面上的图标对于我们日常的操作和使用非常重要 但有时候会出现电脑桌面图标不见了的情况 让人感到困扰 在本文中 我们将介绍三种常见的方法 帮助您找回丢失的电脑桌面图标 让您的使用更加顺畅 方法1 查找桌面图标文件夹 相信很多人会遇到这样的
  • 蓝桥杯 成绩统计

    目录 问题描述 思路分析及代码实现 问题描述 小蓝给学生们组织了一场考试 卷面总分为 100 分 每个学生的得分都是一个 0 到 100 的整数 如果得分至少是 60 分 则称为及格 如果得分至少为 85 分 则称为优秀 请计算及格率和优秀
  • 51单片机的串口通迅

    通信的基本方式分为并行通信和串行通信 并行通信 数据的各位同时在多根数据线上发送或接收 特点 控制简单 传输速度快 由于输线较多 长距离传送时成本高且接收方的各位同时接收存在困难 串行通信 使用一条数据线 将数据一位一位的依次传输 每一位数
  • 1600*B. pSort(并查集)

    解析 并查集 将能够交换的位置相连 查看对应的位置能够交换 include
  • 面试题: Vue中的 computed 和 watch的区别

    computed computed看上去是方法 但是实际上是计算属性 它会根据你所依赖的数据动态显示新的计算结果 计算结果会被缓存 computed的值在getter执行后是会缓存的 只有在它依赖的属性值改变之后 下一次获取computed