Vue3中常用的Composition(组合)API-shallowReavtive和shallowRef

61 阅读1分钟

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。