VueJS中浅响应与深响应的原理和区别,如何实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计746个文字,预计阅读时间需要3分钟。
原文:简述伪原创以下开头内容,不要数数,不超过100字,直接输出结果:原文+前文中讲完了如何响应Object,并处理了一些响应中的问题,但截至目前,包括之前实现的响应式,其实只是浅响应。修改后:概述前文对Object响应方法的介绍及问题处理,但当前及之前实现的响应式仅限浅响应。
正文
前文中讲完了如何响应Object,并处理了一些响应中的问题,但是我们目前,包括之前实现的响应式,其实只是浅响应。
直接上代码
const obj = {a:{b:1}} const reactive = (obj)=> new Proxy(obj,{ get(target,key,receiver){ /*省略其他逻辑*/ return Reflect.get(target,key,receiver) }, /*省略其他拦截*/ }) const data = reactive(obj)
问题就出现在Reflect.get(target, key, receiver)这句代码里,我们现在尝试一下获取data.a,应该返回的是{b:1},不是Proxy,自然不会响应什么。
所以对于这种嵌套对象,我们自然要去递归的把对象转换为响应式对象。
本文共计746个文字,预计阅读时间需要3分钟。
原文:简述伪原创以下开头内容,不要数数,不超过100字,直接输出结果:原文+前文中讲完了如何响应Object,并处理了一些响应中的问题,但截至目前,包括之前实现的响应式,其实只是浅响应。修改后:概述前文对Object响应方法的介绍及问题处理,但当前及之前实现的响应式仅限浅响应。
正文
前文中讲完了如何响应Object,并处理了一些响应中的问题,但是我们目前,包括之前实现的响应式,其实只是浅响应。
直接上代码
const obj = {a:{b:1}} const reactive = (obj)=> new Proxy(obj,{ get(target,key,receiver){ /*省略其他逻辑*/ return Reflect.get(target,key,receiver) }, /*省略其他拦截*/ }) const data = reactive(obj)
问题就出现在Reflect.get(target, key, receiver)这句代码里,我们现在尝试一下获取data.a,应该返回的是{b:1},不是Proxy,自然不会响应什么。
所以对于这种嵌套对象,我们自然要去递归的把对象转换为响应式对象。

