vue3.0中的watch侦听器实例详解

 更新时间:2021年10月09日 11:07:53   作者:Youyzq  
虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器,这就是为什么Vue通过watch选项提供了一个更通用的方法,来响应数据的变化,这篇文章主要给大家介绍了关于vue3.0中watch侦听器的相关资料,需要的朋友可以参考下

前言

虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过watch选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。

侦听器和计算属性的区别

计算属性里不可以做异步操作,侦听器可以做异步操作,相当于计算属性的升级版

 

vue3如何使用watch呢?

基本使用

<template>
  <h1>watch侦听器页面</h1>
  <p>普通侦听数据:{{ num }}</p>
  <button @click="butFn">点击</button>
</template>

script

import { ref, watch } from 'vue'
// 记得用到什么就要导入什么vue3的新特性,按需调用
 setup() {
 
    const num = ref(0)
    // watch(要侦听的数据,回调函数)
    watch(num, (v1, v2) => {
      // v1 是改变以后的新值
      // v2 是改变前的值
      console.log(v1, v2)
      // 要点:侦听普通函数可以获取修改前后的值,被侦听的数据必须是响应式的
    })
    
    // 单机事件
      const butFn = () => {
      num.value++
    }
    
     return { butFn, num }
}

监听多个响应式数据

    const num = ref(0)
    const num2 = ref(20)
    
    watch([num, num2], (v1, v2) => {
      // 存入的结果是一个数组,结果返回的也是一个已数组格式的结果
      // v1是最新结果的数组
      // v2是旧数据的数组
      console.log('v1', v1, 'v2', v2)
    // 总结:可以得到更新前后的值,侦听的结果也是数组数据顺序一致
    })

侦听reactive定义的响应式数据

	const obj = reactive({
      msg: '奇奇怪怪可可爱爱'
    })
    
   watch(obj, () => {
      // 只能获取到最新的值
      console.log(obj.msg)
    })

总结:如果侦听对象,那么侦听器的回调函数的两个参数是一样的结果,表示最新的对象数据,此时也可以直接读取被侦听的对象,那么得到的值也是最新的。

监听reactive定义的响应式数据的某一个属性

	const obj = reactive({
      msg: '奇奇怪怪可可爱爱'
    })
    
	watch(() => obj.msg,(v1, v2) => {
        // v1 就是被监听数据的最新值
        // v2 就是被监听数据的原有值
        console.log(v1, v2)
        // 总结:如果侦听对象中当个属性,需要使用箭头函数的方式
        // 侦听更少的数据有利于提高性能
      }
    )

配置选项用法

   const obj = reactive({
      msg: {
        info: 'ooo'
      }
    })
   watch(() => obj.msg,(v1, v2) => {
        console.log(v1, v2)
      },
      {
        // 首次渲染组件就触发一次
        immediate: true,
        // 开启深度监听,对象里面的数据如果发生变化也会被侦听到
        // 如果监听的数据是一个比较长的表达式,那么需要用一个函数的方式
        // 但是写成函数形式之后,里层的数据变化不到,所以需要添加deep选项
        deep: true
      }
    )

总结

到此这篇关于vue3.0中watch侦听器实例详解的文章就介绍到这了,更多相关vue3.0 watch侦听器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue实现todo应用的示例

    Vue实现todo应用的示例

    这篇文章主要介绍了Vue实现todo应用的示例,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-02-02
  • 基于Vue2.X的路由和钩子函数详解

    基于Vue2.X的路由和钩子函数详解

    下面小编就为大家分享一篇基于Vue2.X的路由和钩子函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • 从Vue转换看Webpack与Vite 代码转换机制差异详解

    从Vue转换看Webpack与Vite 代码转换机制差异详解

    这篇文章主要为大家介绍了从Vue转换看Webpack与Vite代码转换机制差异详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 在vue中使用Base64转码的案例

    在vue中使用Base64转码的案例

    这篇文章主要介绍了在vue中使用Base64转码的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 一篇文章教你实现VUE多个DIV,button绑定回车事件

    一篇文章教你实现VUE多个DIV,button绑定回车事件

    这篇文章主要介绍了VUE多个DIV绑定回车事件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-10-10
  • vue异步请求数据重新渲染方式

    vue异步请求数据重新渲染方式

    这篇文章主要介绍了vue异步请求数据重新渲染方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • vue实现内容可滚动的弹窗效果

    vue实现内容可滚动的弹窗效果

    这篇文章主要为大家详细介绍了vue实现内容可滚动的弹窗效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • vue 使用 vue-pdf 实现pdf在线预览的示例代码

    vue 使用 vue-pdf 实现pdf在线预览的示例代码

    这篇文章主要介绍了vue 使用 vue-pdf 实现pdf在线预览的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Vue-cli中为单独页面设置背景色的实现方法

    Vue-cli中为单独页面设置背景色的实现方法

    下面小编就为大家分享一篇Vue-cli中为单独页面设置背景色的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Vue3之 Vue CLI多环境配置

    Vue3之 Vue CLI多环境配置

    这篇文章主要介绍了Vue3之 Vue CLI多环境配置,通俗点说就是使用配置文件来管理多环境,实现环境的切换,西阿棉详细内容,需要的朋友可以参考一下
    2021-11-11

最新评论