1.ref
ref是通过Object.defineProperty()的get set数据劫持实现的响应式
-
作用: 定义一个响应式的数据
-
语法:
const xxx = ref(initValue)
-
创建一个包含响应式数据的引用对象(reference对象,简称ref对象)。
-
JS中操作数据:
xxx.value
-
模板中读取数据: 不需要.value,直接:
<div>{{xxx}}</div>
-
-
备注:
-
接收的数据可以是:基本类型、也可以是对象类型。
-
基本类型的数据:响应式依然是靠
Object.defineProperty()
的get
与set
完成的。 -
对象类型的数据:内部 “ 求助 ” 了Vue3.0中的一个新函数——
reactive
函数。
-
把数据扔给ref。ref加工生成引用对象.
小总结:
ref声明响应式数据,是在value里面,所以可以用const声明,因为不是全部替换,只是内部替换赋值
const bannerlist = ref([])
.. bannerlist.value = res.result
2.reactive
-
作用: 定义一个的响应式数据(基本类型不要用它,要用
ref
函数) -
语法:
const 代理对象= reactive(源对象)
接收一个对象(或数组),返回一个代理对象(Proxy的实例对象,简称proxy对象) -
reactive定义的响应式数据是“深层次的”。
-
内部基于 ES6 的 Proxy 实现,通过代理对象操作源对象内部数据进行操作。
小总结:
reactive声明的响应式数据在里面是对象,在对象里面包含数据,如果全部总结赋值reactive声明的变量就会造成响应式数据丢失;
//错误演示:
let bannerlist1 = reactive([])
bannerlist1={api数据}
//正确演示:
let bannerlist1 = reactive({
data:[]
})
bannerlist1.data={api数据}
通过Proxy(代理): 拦截对象中任意属性的变化, 包括:属性值的读写、属性的添加、属性的删除等。
通过Reflect(瑞福来各特 反射): 对 源对象的属性进行操作。
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://aj0.cn/vue/731.html
共有 0 条评论