我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue中watch怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue中watch怎么使用

这篇文章主要介绍了Vue中watch怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中watch怎么使用文章都会有所收获,下面我们一起来看看吧。

一、API介绍

watch(WatcherSource, Callback, [WatchOptions])type WatcherSource<T> = Ref<T> | (() => T)interface WatchOptions extends WatchEffectOptions {    deep?: boolean // 默认:false  immediate?: boolean // 默认:false  }

参数说明:

WatcherSource: 用于指定要侦听的响应式变量。WatcherSource可传入ref响应式数据,reactive响应式对象要写成函数的形式。

Callback: 执行的回调函数,可依次接收当前值newValue,先前值oldValue作为入参。

WatchOptions:支持 deep、immediate。当需要对响应式对象进行深度监听时,设置deep: true;默认情况下watch是惰性的,当我们设置immediate: true时,watch会在初始化时立即执行回调函数。

除此之外,vue3的watch还支持侦听多个响应式数据,也能手动停止watch监听。

二、监听多个数据源

<template>  <div class="watch-test">    <div>name:{{name}}</div>    <div>age:{{age}}</div>  </div>  <div>    <button @click="changeName">改变名字</button>    <button @click="changeAge">改变年龄</button>  </div></template><script>  import {ref, watch} from 'vue'  export default {    name: 'Home',    setup() {      const name = ref('小松菜奈')      const age = ref(25)      const watchFunc = watch([name, age], ([name, age], [prevName, prevAge]) => {        console.log('newName', name, 'oldName', prevName)        console.log('newAge', age, 'oldAge', prevAge)        if (age > 26) {          watchFunc() // 停止监听        }      },{immediate:true})      const changeName = () => {        name.value = '有村架纯'      }      const changeAge = () => {        age.value += 2      }      return {        name,        age,        changeName,        changeAge      }    }  }</script>

现象:当改变名字和年龄时,watch都监听到了数据的变化。当age大于26时,我们停止了监听,此时再改变年龄,由于watch的停止,导致watch的回调函数失效。

结论:我们可以通过watch侦听多个值的变化,也可以利用给watch函数取名字,然后通过执行名字()函数来停止侦听。

三、侦听数组

<template>  <div class="watch-test">    <div>ref定义数组:{{arrayRef}}</div>    <div>reactive定义数组:{{arrayReactive}}</div>  </div>  <div>    <button @click="changeArrayRef">改变ref定义数组第一项</button>    <button @click="changeArrayReactive">改变reactive定义数组第一项</button>  </div></template><script>  import {ref, reactive, watch} from 'vue'  export default {    name: 'WatchTest',    setup() {      const arrayRef = ref([1, 2, 3, 4])      const arrayReactive = reactive([1, 2, 3, 4])      //ref not deep      const arrayRefWatch = watch(arrayRef, (newValue, oldValue) => {        console.log('newArrayRefWatch', newValue, 'oldArrayRefWatch', oldValue)      })      //ref deep      const arrayRefDeepWatch = watch(arrayRef, (newValue, oldValue) => {        console.log('newArrayRefDeepWatch', newValue, 'oldArrayRefDeepWatch', oldValue)      }, {deep: true})      //reactive,源不是函数      const arrayReactiveWatch = watch(arrayReactive, (newValue, oldValue) => {        console.log('newArrayReactiveWatch', newValue, 'oldArrayReactiveWatch', oldValue)      })      // 数组监听的最佳实践- reactive且源采用函数式返回,返回拷贝后的数据      const arrayReactiveFuncWatch = watch(() => [...arrayReactive], (newValue, oldValue) => {        console.log('newArrayReactiveFuncWatch', newValue, 'oldArrayReactiveFuncWatch', oldValue)      })      const changeArrayRef = () => {        arrayRef.value[0] = 6      }      const changeArrayReactive = () => {        arrayReactive[0] = 6      }      return {        arrayRef,        arrayReactive,        changeArrayRef,        changeArrayReactive      }    }  }</script>

现象:当将数组定义为响应式数据ref时,如果不加上deep:true,watch是监听不到值的变化的;而加上deep:true,watch可以检测到数据的变化,但老值和新值一样,即不能获取老值。当数组定义为响应式对象时,不作任何处理,watch可以检测到数据的变化,但老值和新值一样;如果把watch的数据源写成函数的形式并通过扩展运算符克隆一份数组返回,就可以在监听的同时获得新值和老值。

结论:定义数组时,最好把数据定义成响应式对象reactive,这样watch监听时,只需要把数据源写成函数的形式并通过扩展运算符克隆一份数组返回,即可在监听的同时获得新值和老值。

四、侦听对象

<template>  <div class="watch-test">    <div>user:{</div>      <div>name:{{objReactive.user.name}}</div>      <div>age:{{objReactive.user.age}}</div>    <div>}</div>    <div>brand:{{objReactive.brand}}</div>    <div>      <button @click="changeAge">改变年龄</button>    </div>  </div></template><script>  import {ref, reactive, watch} from 'vue'  import _ from 'lodash';  export default {    name: 'WatchTest',    setup() {      const objReactive = reactive({user: {name: '小松菜奈', age: '20'}, brand: 'Channel'})      //reactive 源是函数      const objReactiveWatch = watch(() => objReactive, (newValue, oldValue) => {        console.log('objReactiveWatch')        console.log('new:',JSON.stringify(newValue))        console.log('old:',JSON.stringify(oldValue))      })      //reactive,源是函数,deep:true      const objReactiveDeepWatch = watch(() => objReactive, (newValue, oldValue) => {        console.log('objReactiveDeepWatch')        console.log('new:',JSON.stringify(newValue))        console.log('old:',JSON.stringify(oldValue))      }, {deep: true})      // 对象深度监听的最佳实践- reactive且源采用函数式返回,返回深拷贝后的数据      const objReactiveCloneDeepWatch = watch(() => _.cloneDeep(objReactive), (newValue, oldValue) => {        console.log('objReactiveCloneDeepWatch')        console.log('new:',JSON.stringify(newValue))        console.log('old:',JSON.stringify(oldValue))      })      const changeAge = () => {        objReactive.user.age = 26      }      return {        objReactive,        changeAge      }    }  }</script>

现象:当把对象定义为响应式对象reactive时,采用函数形式的返回,如果不加上deep:true,watch是监听不到值的变化的;而加上deep:true,watch可以检测到数据的变化,但老值和新值一样,即不能获取老值;若把watch的数据源写成函数的形式并通过深拷贝克隆(这里用了lodash库的深拷贝)一份对象返回,就可以在监听的同时获得新值和老值。

结论:定义对象时,最好把数据定义成响应式对象reactive,这样watch监听时,只需要把数据源写成函数的形式并通过深拷贝克隆一份对象返回,即可在监听的同时获得新值和老值。

vue是什么

Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是,使用Vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用Vue可以采用单文件组件和Vue生态系统支持的库开发复杂的单页应用。

关于“Vue中watch怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Vue中watch怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue中watch怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue中watch怎么使用

这篇文章主要介绍了Vue中watch怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中watch怎么使用文章都会有所收获,下面我们一起来看看吧。一、API介绍watch(WatcherSource,
2023-07-04

怎么在vue中使用 Watch和Computed

本篇文章给大家分享的是有关怎么在vue中使用 Watch和Computed,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。01. 监听器watch(1)作用watch:用于监听d
2023-06-15

Vue computed与watch怎么使用

这篇文章主要讲解了“Vue computed与watch怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue computed与watch怎么使用”吧!computed用法响应式缓存
2023-07-05

Vue的$watch方法怎么使用

这篇文章主要介绍了Vue的$watch方法怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue的$watch方法怎么使用文章都会有所收获,下面我们一起来看看吧。代码如下:// 键路径vm.$watch(
2023-07-04

vue的watch属性怎么使用

这篇文章主要介绍“vue的watch属性怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue的watch属性怎么使用”文章能帮助大家解决问题。watch是监视属性。在vue中,可以通过wat
2023-07-04

Vue中的Computed与watch怎么用

这篇“Vue中的Computed与watch怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue中的Computed与
2023-06-30

vue怎么使用watch监听属性

这篇文章主要介绍了vue怎么使用watch监听属性的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue怎么使用watch监听属性文章都会有所收获,下面我们一起来看看吧。基本用法Vue watch最重要的使用场景
2023-06-30

怎么使用Vue的watch侦听器

小编给大家分享一下怎么使用Vue的watch侦听器,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!侦听器watch 函数名就是要侦听的元素的名字传入的参数第一个是变化后的新值newval,第二个是变化前的旧值oldval 格
2023-06-22

vue的watch是什么及怎么使用

本篇内容介绍了“vue的watch是什么及怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在vue中,watch用于监听data里面的
2023-07-04

Vue3.0中怎么使用watch

这篇文章主要讲解了“Vue3.0中怎么使用watch”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3.0中怎么使用watch”吧!Vue3.0中使用watchwatch在Vue3.0中
2023-06-27

Vue中watch使用方法详解

watch就是当值第一次绑定的时候,是不会执行监听函数的,只有值诞生改变才会执行。如果需要在第一次绑定的时候也执行函数,则需要用到immediate属性,比如当父组件向子组件动态传值时,子组件props首次获取到父组件传来的No认知时,也需要执行函数
2023-01-28

Vue3中的watch怎么使用

这篇文章主要介绍“Vue3中的watch怎么使用”,在日常操作中,相信很多人在Vue3中的watch怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3中的watch怎么使用”的疑惑有所帮助!接下来
2023-07-05

Vue怎么使用watch监听数组或对象

这篇文章主要介绍“Vue怎么使用watch监听数组或对象”,在日常操作中,相信很多人在Vue怎么使用watch监听数组或对象问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue怎么使用watch监听数组或对象
2023-07-02

vue3中watch和watchEffect怎么使用

这篇文章主要讲解了“vue3中watch和watchEffect怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue3中watch和watchEffect怎么使用”吧!一、watch
2023-06-21

Vue中的watch侦听器、计算属性、Vue-cli和组件怎么使用

这篇文章主要介绍了Vue中的watch侦听器、计算属性、Vue-cli和组件怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中的watch侦听器、计算属性、Vue-cli和组件怎么使用文章都会有所收
2023-06-30

vue中watch是什么属性

watch是监视属性。在vue中,可以通过watch属性来监视某个属性的变化,当这个属性发生变化时,可以执行一些操作:1、当监视属性所监视的属性发生变化的时候,回调函数就会自动调用,并且执行相关的操作;2、监视属性所监视的属性要存在,才能产生作用。监视属性有两种写法“new Vue({watch:{}})”和“vue实例化对象.$watch('属性名'回调函数)”。
2023-05-14

vue3中的watch和computed怎么使用

一、watch1.检测reactive内部数据{{obj.hobby.eat}}clickimport{watch,reactive}from&#39;vue&#39;exportdefault{name:&#39;App&#39;,setup(){constobj=reactive({name:&#39;ifer&#39;,hobby:{eat:&#39;西瓜&#39;,},})watch(obj,(newValue,oldVal
2023-05-21

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录