【学习笔记】vue3的watch

尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通

课程 P152节 笔记:
情况一:监视ref所定义的一个响应式数据
情况二:监视ref所定义的多个响应式数据
这两种情况比较简单,正常写就ok:

情况三:监视reactive所定义的一个响应式数据
这种情况下,问题来了,此时无法正确获取oldValue的值,打印如图:

在这里插入图片描述

此时如果一定要获取oldValue的值,可以将需要获取oldValue的某个属性值单独使用ref定义。

第二个坑是:强制开启了深度监视,也就是配置deep:false也不起作用

【学习笔记】vue3的watch_第1张图片

情况四:监视reactive所定义的一个响应式数据种的某个属性
这种情况需要将所要监视的属性写到一个函数的返回值里:

【学习笔记】vue3的watch_第2张图片
【学习笔记】vue3的watch_第3张图片

情况五:监视reactive所定义的一个响应式数据种的某些属性
【学习笔记】vue3的watch_第4张图片
【学习笔记】vue3的watch_第5张图片

特殊情况:监视reactive所定义的一个响应式数据的一个对象属性
此时由于监视的是reactive所定义的响应式对象种的某个属性,所以deep配置有效

在这里插入图片描述

特殊情况,如果不加{deep:true},监视不奏效:

【学习笔记】vue3的watch_第6张图片

总结

  • 如果监视的是一个reactive定义的响应式数据(情况三),则会出现两个小问题:1、无法正确获取到oldValue;2、强制开启了深度监视且无法关闭,即配置{deep:false}无效

  • 如果监视的是一个reactive定义的响应式数据中的某一个对象属性(特殊情况),则需要配置{deep:true}监视才会生效;此时仍然无法正确获取到oldValue

  • 貌似是:只要监视的值是对象,就无法获取到oldValue

你可能感兴趣的:(学习,笔记,vue.js)