shallowReavtive和shallowRef
shallow中文译为浅层次的,
引入shallowReavtive和shallowRef
想要使用shallowReavtive和shallowRef,也是需要先引入的
import {shallowReactive,shallowRef} from "vue";
shallowReavtive和reavtive
shallowReavtive定义对象类型数据,只考虑第一层响应式,里面的不考虑
如果使用shallowReavtive定义对象,由于shallowReavtive是浅层次的,只能处理第一层属性,嵌套对象属性是不处理的
一级属性name和age都能修改,但是嵌套属性sal是不能修改的
所以shallowReavtive和reavtive区别就是:shallowReavtive只能处理浅层气的数据,但是reavite可以处理多层次的数据
shallowRef和ref
如果定义普通数据类型,nameshallowRef和ref是没有区别的
但是如果定义的是对象类型,那么shallowRef就无效了
下面把ref换成shallowRef
发现没用了
由此可见,ref可以处理普通类型数据和对象类型数据,但是shallowRef只能处理普通类型的数据。
总结
-
shallowReactive:只处理对象最外层属性的响应式(浅响应式)。
-
shallowRef:只处理基本数据类型的响应式, 不进行对象的响应式处理。
-
什么时候使用?
- 如果有一个对象数据,结构比较深, 但变化时只是外层属性变化 ===> shallowReactive。
- 如果有一个对象数据,后续功能不会修改该对象中的属性,而是生新的对象来替换 ===> shallowRef。