vue中 computed和watch的一些简单理解(区别)

2023-05-16

       今天看到一个问题,就是 vue 的 computed 和 watch 要在哪些场景下使用,其实也就是在问他们的区别。computed 也就是计算属性,它可以帮助我们将在模板中的一些稍微复杂的逻辑计算放回到js代码中,方便理解与修改维护;就拿官网给的例子,如下代码片段。

<div id="example">
  {{ message.split('').reverse().join('') + number }}
</div>

这js片段虽然看起来挺简单的,但是,如果以后多了需求,要做多一两步的逻辑,在模板里面维护起来就麻烦了,所以类似这种的,我们将其写到 computed 计算属性里面。也就是下面这样子,这样子看起来美观,一看就清楚这是干啥用的

<template>
  <div>
    <p>{{ reversedMessage }}</p>
  </div>
</template>

<script>
export default {
  name: 'test1',
  data () {
    return {
      message: 'hello world',
      number: 1
    }
  },
  computed: {
    // 字符串反转
    reversedMessage () {
      return this.message.split('').reverse().join('') + this.number
    }
  }
}
</script>

        在 computed 中定义的每一个计算属性,都会被缓存起来,只有当计算属性里面依赖的一个或多个属性变化了,才会重新计算当前计算属性的值。上面的代码片段中,在 reversedMessage 中,它依赖了 message 和number 这两个属性,一旦其中一个变化了,reversedMessage 会立刻重新计算输出新值。

       watch 是属性监听器,一般用来监听属性的变化(也可以用来监听计算属性函数),并做一些逻辑。在这里就稍微说下他监听属性的功能吧。

<template>
  <div>
    <p>{{ this.number }}</p>
  </div>
</template>

<script>
export default {
  name: 'test1',
  data () {
    return {
      number: 1
    }
  },
  created () {
    setTimeout(() => {
      this.number = 100
    }, 2000)
  },
  watch: {
    number (newVal, oldVal) {
      console.log('number has changed: ', newVal)
    }
  }
}
</script>

       上面的代码中,我们在 watch 中监听了 number 属性,并且在实例创建后2s执行对 number 属性的值的更改。我们可以在控制台中看到2s后打印了如下图:

就我自己目前来说,watch 一般就用来一个数据来影响多个数据的操作,或者比如说是用来监听 input 然后进行一些即时搜索操作什么的。

       大概总结一下,computed 和 watch 的使用场景并不一样,computed 的话是通过几个数据的变化,来影响一个数据,而 watch,则是可以一个数据的变化,去影响多个数据。

        补充一下:computed 跟 methods 里面的方法的区别,computed 的话访问的时候会直接返回已缓存的结果,而不会像 methods 一样再次计算

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

vue中 computed和watch的一些简单理解(区别) 的相关文章

  • 01 es高手进阶系列课程说明

    深度讲解搜索 xff0c 数据分析 xff0c 数据建模 特色 xff1a 纯手工画图剖析各种原理 xff0c 纯实战驱动讲解各种知识点 xff0c 知识体系的细致和完整 怎么实战驱动 xff1f 核心知识篇 xff0c 上半季 xff0c
  • 大数据技术体系

    文件存储 xff1a Hadoop HDFS Tachyon KFS 离线计算 xff1a Hadoop MapReduce Spark 流式 实时计算 xff1a Storm Spark Streaming S4 Heron K V NO
  • 02.结构化搜索_在案例中实战使用term filter来搜索数据

    课程大纲 1 根据用户ID 是否隐藏 帖子ID 发帖日期来搜索帖子 xff08 1 xff09 插入一些测试帖子数据 POST forum article bulk 34 index 34 34 id 34 1 34 articleID 3

随机推荐