Vue reactive 浅拷贝请教

const testdata = reactive({name:小明,age:18})
这里不能
testdata = {name:小钱,age:18}
object.assign(testdata,source) 这个方法是深拷贝

现在要一次性 给 testdata 浅拷贝 赋值一个对象
如何操作

Object.assign主要看对象的键值,如果源对象的属性值是一个指向对象的指针,那也只拷贝那个指针。所以如果对象的属性值为基础类型,对于通过Object.assign()拷贝的那个属性而言是深拷贝;如果对象的属性值为引用,对于通过通过Object.assign()拷贝的那个属性而言其实是浅拷贝的。


vue reactive 实际为ES6的proxy。直接用proxy对原始对象监控就行了,而且原来题主另外一个应该数据分开,在给vue提供数据源前新建一个proxy监控数据。在数据修改时同时设置下vue的和自己的,然后自己建立的proxy只会返回修改的属性而不是整个对象。题主还是研究下Proxy来实现好些,而不是watch整个对象
ES6 入门教程 https://es6.ruanyifeng.com/#docs/proxy

使用ref,ref(obj)等价于reactive({value: obj})

通过es6的rest语法(好像叫这个,就是...)
const newObj={...testdata}。
多用es6的语法。很好用
看你例子好像只是改了其中一个变量。
直接testdata.name=小明
testdata输出一下

Object.assign()是浅拷贝

img

https://blog.csdn.net/weixin_47074432/article/details/112919142?spm=1001.2014.3001.5502

JSON.parse(JSON.stringify(变量))

const testdata = ref({name:小明,age:18})
testdata.value = {name:小钱,age:18}
object.assign(testdata.value, source)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632