vue中watch的详解

vue中watch的详解Watch 概述 一个对象 键是需要观察的表达式 值是对应回调函数 值也可以是方法名 或者包含选项的对象 Vue 实例将会在实例化时调用 watch 遍历 watch 对象的每一个属性 简单的监听 body divid app inputtype text v model num lt inputtype text v model num divid app body

Watch概述

    一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。

简单的监听
<body> <div id="app"> <input type="text" v-model="num"> </div> <script src="vue.js"></script> <script> new Vue({ 
    el: '#app', data: { 
    num: '' }, watch: { 
    num(newVal, oldVal) { 
    // 监听 num 属性的数据变化 // 作用 : 只要 num 的值发生变化,这个方法就会被调用 // 第一个参数 : 新值 // 第二个参数 : 旧值,之前的值 console.log('oldVal:',oldVal) console.log('newVal:',newVal) } } }) </script> </body> 
immediate(立即处理 进入页面就触发)
<body> <div id="app"> <input type="text" v-model="num"> </div> <script src="vue.js"></script> <script> new Vue({ 
    el: '#app', data: { 
    num: 1 }, watch: { 
    num: { 
    // 数据发生变化就会调用这个函数  handler(newVal, oldVal) { 
    console.log('oldVal:', oldVal) console.log('newVal:', newVal) }, // 立即处理 进入页面就触发 immediate: true } } }) </script> </body> 
deep(深度监听)

    对象和数组都是引用类型,引用类型变量存的是地址,地址没有变,所以不会触发watch。这时我们需要进行深度监听,就需要加上一个属性 deep,值为 true

<body> <div id="app"> <input type="button" value="更改名字" @click="change"> </div> <script src="vue.js"></script> <script> new Vue({ 
    el: '#app', data: { 
    food: { 
    id: 1, name: '冰激凌' } }, methods: { 
    change() { 
    this.food.name = '棒棒糖' } }, watch: { 
    // 第一种方式:监听整个对象,每个属性值的变化都会执行handler // 注意:属性值发生变化后,handler执行后获取的 newVal 值和 oldVal 值是一样的 food: { 
    // 每个属性值发生变化就会调用这个函数 handler(newVal, oldVal) { 
    console.log('oldVal:', oldVal) console.log('newVal:', newVal) }, // 立即处理 进入页面就触发 immediate: true, // 深度监听 属性的变化 deep: true }, // 第二种方式:监听对象的某个属性,被监听的属性值发生变化就会执行函数 // 函数执行后,获取的 newVal 值和 oldVal 值不一样 'food.name'(newVal, oldVal) { 
    console.log('oldVal:', oldVal) // 冰激凌 console.log('newVal:', newVal) // 棒棒糖 } } }) </script> </body> 

Watch和computed的区别

  1. computed支持缓存,只有依赖数据发生改变,才会重新进行计算;而watch不支持缓存,数据变,直接会触发相应的操作
  2. computed不支持异步,当computed内有异步操作时无效,无法监听数据的变化,而watch支持异步
  3. computed属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值;而watch监听的函数接收两个参数,第一个参数是最新的值,第二个参数是输入之前的值
  4. 如果一个属性是由其它属性计算而来的,这个属性依赖其它属性,多对一或者一对一,一般用computed;而当一个属性发生变化时,需要执行对应的操作,一对多,一般用watch
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199390.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 下午1:05
下一篇 2026年3月20日 下午1:05


相关推荐

  • 安装VMware 和Ubuntu教程 以及ubuntu更新源「建议收藏」

    安装VMware 和Ubuntu教程 以及ubuntu更新源「建议收藏」1、VMwareWorkstation安装教程,见链接https://jingyan.baidu.com/article/9f7e7ec09da5906f281554d6.html2.VMware虚拟机下安装ubuntu操作系统(1)、下载ubuntu操作系统镜像(2)、点击文件–新建虚拟机,或者点击右边新建虚拟机。(3)、这里选择典型的安装模式(4)、点击下一步,选择安装…

    2022年7月22日
    9
  • 无刷直流电机模糊PID控制「建议收藏」

    无刷直流电机在克服了有刷直流电机机械换相缺点的同时,又具有结构简单、运行可靠以及调速性能好等优点,在很多领域中得到了广泛的应用。本次课题阐述了无刷直流电机的基本结构、运行原理和数学模型,并以无刷直流电机为被控对象,根据电机的特点和控制要求确定了三闭环控制策略,分别是位置、转速及电流环控制三者之间实行串级连接。采用模糊PID控制理论,搭建无刷直流电机和控制器的仿真模型来验证电机控制策略的可行性,使要能使伺服控制器的具体性能满足:无静差,响应快,超调量小的设计要求。结合三闭环控制结构的特点,在位置环中采用模

    2022年4月16日
    70
  • JSP程序设计作业

    JSP程序设计作业JSP页面由哪几种主要元素组成?四种元素:普通的HTML标记JSP注释JAVA脚本元素,包括声明、JAVA程序片和JAVA表达式​JSP标记,如指令标记,动作标记和自定义标记。如果有3个用户访问一个JSP页面,该页面中的Java程序片将被执行几次?三次<%!和%>之间声明的变量与<%和%>之间声明的变量有何不同?<%!和%>之间声明的变量在整个JSP页面内都有效,称为JSP页面的成员变量,成员变量的有效范围与标记符号<%!,%…

    2022年6月25日
    32
  • git update-index –assume-unchanged

    git update-index –assume-unchanged

    2021年10月20日
    51
  • AutoDL算力租用++Pycharm中SSH、SFTP连接远程服务器[通俗易懂]

    AutoDL算力租用++Pycharm中SSH、SFTP连接远程服务器[通俗易懂]本文主要涉及GPU租用以及Pycharm中SSH、SFTP连接远程服务器

    2022年6月24日
    38
  • LeetCode刷题:链表两数相加

    LeetCode刷题:链表两数相加

    2021年2月26日
    203

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号