methods,computed,watch三者区别?【专栏11】

前端人

共 2651字,需浏览 6分钟

 ·

2021-06-21 03:04

watch

  • 当数据改变时,直接触发对应操作;
  • 可以监听的数据有三部分,即props,data,computed;
  • 所触发的对应操作函数中包含两个参数,第一个参数是新值newValue,第二个参数是旧值oldValue;
  • 不支持缓存,但支持异步,在数据变化时执行异步或开销较大的操作时使用;
  • 一对多,即一个数据改变时,可以通过触发对应操作改变多个其他的数据。

computed

  • computed 依赖于 data 中的数据,只要在它的相关依赖发生改变时就会触发computed;
  • 计算属性是基于属性的依赖进行缓存的,当data中的数据未变时,优先取缓存中的东西;
  • 支持缓存,但不支持异步;
  • 多对一或一对一,即一个属性是由其他属性计算而来的,这个属性可能是依赖其他一个或多个属性。

methods

  • 是一个方法,执行的时候需要事件进行触发;
  • 可以在模板或者js中以方法的形式调用
  • 执行次数跟调用次数想对应

使用说明

export default {
    data: {
   userName'鬼鬼'
 },
    watch:{
      userName(newValue,oldValue){
        console.log(`原来的值:${newValue}`);
        console.log(`新的值${oldValue}`);
      },
      //深度监听   
      userName:{
        handler:function(newValue,oldValue){
           console.log(`原来的值:${newValue}`);
           console.log(`新的值${oldValue}`);
        },
        immediate:true,
        deep:true
      },
    },
 computed: {
   gUserName() {
    return this.userName 
   },
    //computed传参
    gUserName(keyName){
        return function(keyName){
            return keyName+this.userName
        }
    }
 },
 methods: {
   getUserName() {
    return this.userName
   }
 }
}
<template>
  <!-- methods -->
  <div> 我的名字叫:{{ getUserName() }} </div>
  <!-- computed -->
  <div> 我的名字叫:{{ gUserName }} </div>
  <!-- computed 传参 -->
  <div> {{ gUserName("我的名字叫:") }} </div>
</template>

说明

本专栏总共汇总了150道题每道题目答案没有多余扯皮的部分,就是单纯的答案。

关注公众号,每天一到面试题,为下次跳槽准备,人人都能冲击30k+,点击↓关注【鬼哥】

当前进度【#011题】,如果你能点赞分享、鬼哥骑自行车也是开心的

浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报