2022-03-05 vue面试题:methods,computed和watch的区别和各自的使用场景是什么?

本文深入探讨了Vue中methods,computed和watch的区别与应用场景。methods仅提供函数,不处理数据逻辑;computed是计算属性,依赖数据变化时更新;watch则是数据监听器,适合异步操作。文章通过实例详细分析了三者在数据处理和场景适用上的特性,并展示了如何用computed优化methods的重复计算和简化watch中的冗余代码。" 109774289,5824083,强化学习基础与应用解析,"['机器学习', '强化学习', '决策', '试错', '游戏应用']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.面试题:methods,watch和computed的异同

2022-02-09 面试题:vue(三) r o u t e r 和 router和 routerroute的区别,computed和watch的区别

相同点

watch和computed都是观察页面数据变化的

不同点:
  • methods不处理数据逻辑关系,只提供可调用的函数
  • computed只能当依赖的数据变化时才会计算,当数据没有变化时会读取缓存数据
  • watch每次都需要执行函数,适用于数据变化时的异步操作

二.methods,computed和watch的定义和用法回顾

methods

methods不处理数据逻辑关系,只提供可调用的函数

computed

计算属性,会根据所依赖的数据,动态显示新的计算结果并缓存该计算结果
computed的值在getter执行后缓存,若所依赖的数据发生改变会重新调用getter来计算最新结果

watch

是一个对data数据的监听回调,当依赖的data的数据变化时执行回调,
在回调中会传入newVal和oldVal两个参数
vue实例会在实例化时调用$watch(),遍历watch 对象的每个属性

三.从作用机制和性质上看待三者关系

1.作用机制

1.watch和computed的都是已Vue的依赖追踪机制为基础的,它们都视图处理这样一件事情:

当某一数据(称为依赖数据)发生变化时,所有依赖此数据的"相关"数据"自动"发生变化,
也就是自动调用相关的函数,去实现数据的变动

2.methods里面是用来定义函数的,需要手动调用才能执行,而watch和computed是"自动执行"预先定义的函数
总结来说就是,methods里面定义的函数需要主动调用,而watch和computed相关的函数会自动调用,完成我们用户希望完成的作用

2.性质

1.methods里定义的是函数,需要想调用一个函数一样去调用它
2.computed是计算属性,实际上与data对象中的数据属性是一样的

computed:{
   
	fullName:function(){
   return this.firstName+this.lastName}
}

在取用时,是用this.fullName去取的,就像取data中的属性一样
3.watch类似于"监听机制"+“事件机制”

watch:{
   
fullName:function(val){
   this.fullName=val+this.lastName})
}

firstName的改变时这个特殊"事件"被触发的条件,其对应的函数就相当于监听到事件发生后所执行的回调方法

四.watch 和 computed 的对比

3.1.异同
  • 相同点
    都是已Vue的依赖追踪机制为基础的,都是希望在依赖数据发生改变的时候,被依赖的数据根据预先定义好的函数,发生“自动”的变化。
  • 不同点:各自处理的数据关系场景不同
    watch擅长处理的场景:一个数据影响多个数据
    computed擅长处理的场景:一个数据手受到个数据影响
3.2.watch擅长处理的场景:一个数据受到多个数据影响

在这里插入图片描述

watch使用场景示例

《海贼王》里面,主角团队的名称叫做:“草帽海贼团”,所以我们把船员依次称为:“草帽海贼团索隆”、“草帽海贼团娜美”…
当船团名称发生变更的时候,这艘船上所有船员的名字一起变更(如 “草帽海贼团” 改名为 “橡胶海贼团”)

var vm=new Vue({
   
  el:"#app",
  data:{
   //船员名=海贼团名+名字,数据关系:多个船员名数据依赖于一个海贼团名数据
    ship
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值