浅聊一下vue中的watch监听器 方法,计算属性,监听器到底该怎么去选择呢?

浅聊一下watch监听器 都能实现功能 计算属性和方法,监听器如何去做选择呢?

哈喽哈喽,大家好。我是你们的金樽清酒。今天我要给大家分享一下vue中的watch监听器。它是干什么的呢?怎么去使用呢?它跟计算属性有什么区别呢?

watch 的作用和特性

  • watch的作用 watch是用来干嘛的呢?我们知道,计算属性是可以根据响应数据源来得到一个计算的值,所以它的返回结果一定是一个值。那要是我们需要在数据源发生变化的时候去完成一些业务逻辑呢?这个时候我们是不是就不只是满足于得到一个值啦,而是完成一个更加复杂的逻辑。

  • watch的用法和特性 1.在组合式api中,我们用watch去触发回调函数,回调函数里面有两个参数,一个代表闲杂的值,一个代表以前的值。让我们看一下代码,打印看一下。

js 复制代码
<template>
  <div>
    <h2>{{ title }}</h2>
    <h2> {{ totalPrice }} </h2>
    <button @click="addCount">add</button>
  </div>
</template>

<script setup>
import { ref, computed, watch } from 'vue';
const title = ref("物品的价格")
const price = ref("100")
const count = ref(2)
const totalPrice = computed(() => price.value * count.value, console.log("1"))
watch(count, (newValue, oldValue) => {
  console.log(newValue, oldValue)
})
const addCount = () => {
  count.value++
}
</script>
<style lang="scss" scoped></style>

在代码15行到17行,watch函数监听了变量count的值。并触发了后面的回调函数。里面的参数就代表了count现在的值和以前的值。让我们看一下效果。

在我点击一下按钮的时候,count由2变为3,打印出来为3 2。

watch 和computed的区别

既然watch和computed都能根据响应式数据源的变化而变化。那么有些computed的功能watch也能完成。那两者有什么区别呢?

注意!!!两者还是有较大的区别的

  • 1.watch里面是回调函数,它是一个方法,可以用来写业务代码,而computed必须返回一个值。所以在都能完成一个功能的时候选computed。它能直接返回一个值,更加的简单。而方法也能完成这个功能,也选择computed,因为computed有缓存,不用重复的调用方法。
  • 2.computed在页面渲染的时候就会触发而watch只有在数据源发生变化的时候才会触发。让我们看一下。 还是上面的代码,在页面渲染的时候打印的是computed里面的1,而当我们点击按钮的时候,watch才开始打印。

这就是二者的一点区别。

总结

watch也可以洞察到数据源的变化。但是它会触发一个回调函数来让我们写业务代码。而computed必须返回一个值,不能写业务代码,更好用于计算。所以在方法和computed能完成同一个功能时用computed,因为computed有缓存。在watch和computed完成一个功能时,用computed,因为更简洁。当然computed的不能完成的功能肯定是用方法和watch来完成。

假如您也和我一样,在准备春招。欢迎加我微信shunwuyu,这里有几十位一心去大厂的友友可以相互鼓励,分享信息,模拟面试,共读源码,齐刷算法,手撕面经。来吧,友友们!"

相关推荐
麦麦在写代码1 分钟前
前端学习6(JS 1)
前端·javascript·学习
码界奇点9 分钟前
基于Flask与Vue.js的百度网盘自动转存系统设计与实现
vue.js·python·flask·自动化·毕业设计·源代码管理
白帽子黑客杰哥10 分钟前
CTF Web题目常用考点与解题技巧合集
前端·数据库·web安全·网络安全·ctf·信息收集
许___12 分钟前
axios使用 CancelToken / AbortController 方法进行取消请求
前端·javascript
LYFlied18 分钟前
Webpack详细打包流程解析
前端·面试·webpack·node.js·打包·工程化
明朝百晓生20 分钟前
强化学习[page14]【chapter7】Temporal-Difference Learning (TD learning)
前端·html
我只会写Bug啊23 分钟前
B站/爱奇艺防录屏防截屏原理及Vue3实战实现
前端·软件开发
蜗牛攻城狮26 分钟前
前端构建工具详解:Vite 与 Webpack 深度对比与实战指南
前端·webpack·vite·构建工具
IT_陈寒31 分钟前
Redis 性能翻倍的 5 个冷门技巧,90%开发者都不知道的底层优化!
前端·人工智能·后端