Vue3前端开发,watch侦听器的深度监听和精确监听

这篇具有很好参考价值的文章主要介绍了Vue3前端开发,watch侦听器的深度监听和精确监听。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vue3前端开发,watch侦听器的深度监听和精确监听!今天和大家分享的内容是,关于watch的深度侦听和精确监听。

首先看一下,第一个案例,练习的是,深度监听的效果。默认是浅的侦听,是不会触发回调函数的。


<script setup>
import state from '@/store/state';
import {ref,watch} from 'vue'
const price = ref({num:10})
const changePriceByNum = ()=>{
    //直接修改num
    price.value.num++
}
//watch深度侦听测试
watch(price,()=>{
    console.log('num变化了');
},{
    deep:true
})
</script>
<template>
    <h3>watch侦听器练习2-精确侦听和深度侦听</h3>
    <p>草莓单价是:{{ price.num }}</p>
    <button @click="changePriceByNum">修改num</button>

</template>

Vue3前端开发,watch侦听器的深度监听和精确监听,VUE3,vue.js,前端,javascript

如图,当我们点击按钮,修改num值的时候,触发了回调函数,在控制台打印了内容。

如果把参数deep:true去掉,就不会触发这个回调函数。大家可以试试看。


下面展示的是,同时侦听一个符合对象的情况下,开启深度侦听的情况如何。

<script setup>
import state from '@/store/state';
import {ref,watch} from 'vue'
const price = ref({num:10})
const changePriceByNum = ()=>{
    //直接修改num
    price.value.num++
}
const userInfo = ref({
    name:'admin',
    age:24
})
const changeName =()=>{
    //修改name
    userInfo.value.name = 'pitter'
}
const changeAge = () => {
    //修改age
    userInfo.value.age = 34
}
//watch深度侦听测试
watch(price,()=>{
    console.log('num变化了');
},{
    deep:true
})
watch(userInfo,()=>{
    console.log('触发了回调函数')
},{
    deep:true
})
</script>
<template>
    <h3>watch侦听器练习2-精确侦听和深度侦听</h3>
    <p>草莓单价是:{{ price.num }}</p>
    <button @click="changePriceByNum">修改num</button>
    <hr />
    <p>name-{{ userInfo.name }}</p>
    <p>age-{{ userInfo.age }}</p>
    <button @click="changeName">修改name</button>
    <button @click="changeAge">修改age</button>
</template>

如图代码,我们定义了userInfo对象,里面有一个name和age.2个属性。

当我们侦听这个userInfo对象时,无论我们修改任何一个属性,都会触发回调函数的。

Vue3前端开发,watch侦听器的深度监听和精确监听,VUE3,vue.js,前端,javascript

如图,我们修改了name,从admin,改成了petter.触发了回调函数。

Vue3前端开发,watch侦听器的深度监听和精确监听,VUE3,vue.js,前端,javascript

如图所示,我们修改了age.从24,变成了34.同样会触发回调函数的。如果,我们只想精确的侦听到name的变化,该怎么办?就是:使用精确侦听的方式。


watch(
    ()=>userInfo.value.name,
    ()=>{
        console.log('触发侦听了!name变化了');
    }
)

如图,我们的侦听器内应该这样写。使用一个回调函数的形式,把我们精确侦听的那个参数,写入到watch的第一个参数的位置。【如果你想同时侦听多个,可以使用数组的形式传参。】。

Vue3前端开发,watch侦听器的深度监听和精确监听,VUE3,vue.js,前端,javascript

如图,name确实改成了petter.触发了回调函数了,此时此刻,我们如果去修改age.是不会触发回调函数的。


1:watch函数的第一个参数,ref对象不需要加value,它会自己默认处理的。
2:watch可以侦听一个,也可以同时侦听多个数据。
3:watch默认是浅侦听模式,直接修改嵌套属性不能触发回调函数,想触发需要开启深度侦听模式。
4:watch如果想精确侦听某个属性,可以把该属性,以回调函数的形式写出来,放在参数的位置。文章来源地址https://www.toymoban.com/news/detail-819129.html

到了这里,关于Vue3前端开发,watch侦听器的深度监听和精确监听的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端Vue入门-day02-vue指令、computed计算属性与watch侦听器

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 指令补充 指令修饰符 v-bind 对于样式控制的增强  操作class 案例:京东秒杀 tab 导航高亮 操作style  v-model 应用于其他表单元素  computed 计算属性 基础语法 computed 计算属

    2024年02月11日
    浏览(41)
  • Vue中watch侦听器用法

    watch 需要侦听特定的数据源,并在单独的回调函数中执行副作用 watch第一个参数监听源 watch第二个参数回调函数cb(newVal,oldVal) watch第三个参数一个options配置项是一个对象{ immediate :true //是否立即调用一次 deep :true //是否开启深度监听 flush :“pre” // 更新时机 } flush配置项 p

    2024年02月06日
    浏览(51)
  • Vue Composition API之侦听器watch/watchEffect

    在日常的开发中,很多时候我们需要去对一些状态进行监听,比如当显示学生的成绩列表时,我们使用一个学生的学号student_num作为请求成绩的参数,如果没有监听机制,当学号student_num改变时,我们需要依赖用户的操作去刷新成绩。但是有了侦听器,我们可以通过侦听器去监

    2024年02月08日
    浏览(41)
  • 【vue2】计算属性(computed)与侦听器(watch)详解

    🥳博       主: 初映CY的前说(前端领域) 🌞个人信条: 想要变成得到,中间还有做到! 🤘本文核心: 计算属性与侦听属性的用法 目录( 文末有给大家准备好的Xmind思维导图 ) 一、计算属性computed ①默认get()方法,仅是获取值 ②不仅仅是获取值,还具有修改属性功能

    2024年01月16日
    浏览(49)
  • 微信小程序实现页面数据侦听器,类似vue的watch

    既然小程序的组件已经有Observer功能,那为什么还要手写watch功能呢? Observer只能在Component中使用,没法在Page中使用。若是想在Page中监控某一数据的变化,Observer做不到。 Observer属于小程序的新功能,只能在高版本微信使用,低版本微信无法使用。公司的小程序就因为使用了

    2024年02月03日
    浏览(54)
  • 浅谈在 Vue2 和 Vue3 中计算属性和侦听器的一些变化

    计算属性 computed 和侦听器 watch 都是 Vue.js 框架中用来响应式更新视图的重要概念。因此无论是在哪个版本,它们都是不可缺少的概念, 这篇文章就不过多详细介绍计算属性和侦听器的概念和理论了 ,接下来主要谈谈 Vue2 和 Vue3 中计算属性和侦听器的语法变化和异同。 计算属

    2023年04月26日
    浏览(48)
  • 深入与浅谈 Vue 中计算属性和侦听器的区别和使用(Vue3版本为例)

    #五一技术创作马拉松# 计算属性 computed 和侦听器 watch 都是 Vue.js 框架中用来响应式更新视图的重要概念。在 Vue 项目开发中,这两个技术点是非常重要的,同时也是 Vue 基础中不可缺少的知识点。在面试中,计算属性 computed 和侦听器 watch 也是经常出现的考点,作为前端开发也

    2024年02月07日
    浏览(69)
  • Vue——侦听器

    目录 基本示例​ 深层侦听器​ 即时回调的侦听器​ 回调的触发时机​ this.$watch()​ 停止侦听器​        计算属性允许我们声明性地计算衍生值。然而在有些情况下,我们需要在状态变化时执行一些“副作用”:例如更改 DOM,或是根据异步操作的结果去修改另一处的状态

    2023年04月13日
    浏览(49)
  • Vue学习-计算属性和侦听器

    1、计算属性的定义和原理 1、定义:要用的属性不存在,要通过已有属性计算得来。 2、原理:底层借助了Objcet.defineproperty方法提供的getter和setter。 3、get函数什么时候执行?   (1) 初次读取时会执行一次。   (2)当依赖的数据发生改变时会被再次调用。 4、优势:与

    2023年04月18日
    浏览(46)
  • VUE教程-基础-计算属性和侦听器

    模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如: 在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量  message  的翻转字符串。当你想要在模板中的多

    2024年02月17日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包