尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通
课程 P152节 笔记:
情况一:监视ref所定义的一个响应式数据
情况二:监视ref所定义的多个响应式数据
这两种情况比较简单,正常写就ok:
情况三:监视reactive所定义的一个响应式数据
这种情况下,问题来了,此时无法正确获取oldValue的值,打印如图:
此时如果一定要获取oldValue的值,可以将需要获取oldValue的某个属性值单独使用ref定义。
第二个坑是:强制开启了深度监视,也就是配置deep:false也不起作用
情况四:监视reactive所定义的一个响应式数据种的某个属性
这种情况需要将所要监视的属性写到一个函数的返回值里:
情况五:监视reactive所定义的一个响应式数据种的某些属性
特殊情况:监视reactive所定义的一个响应式数据的一个对象属性
此时由于监视的是reactive所定义的响应式对象种的某个属性,所以deep配置有效
特殊情况,如果不加{deep:true},监视不奏效:
总结
-
如果监视的是一个reactive定义的响应式数据(情况三),则会出现两个小问题:1、无法正确获取到oldValue;2、强制开启了深度监视且无法关闭,即配置{deep:false}无效
-
如果监视的是一个reactive定义的响应式数据中的某一个对象属性(特殊情况),则需要配置{deep:true}监视才会生效;此时仍然无法正确获取到oldValue
-
貌似是:只要监视的值是对象,就无法获取到oldValue