vue3和ts结合开发的时候,总是会遇到引用数据类型的重新赋值的情况,但是在vue3中,又不能使用直接赋值的情况,因为会改变proxy的结构,导致响应式失败,那么该如何重新赋值响应式对象数据成为了一个技巧问题,今天它来了
数组Array的响应式赋值
如果是数组的话,踩坑点:**清空数组,然后再重新给数组赋值的时候,发现数组变化了页面没有响应,代码如下:
derwayList = [];// 或者使用下面的也不行derwayList = reactive([]);
原因:虽然重新代理了,但是这个数组已经不是页面上的数组,也就不是setup返回出去的那个,通俗来说就是你大爷已经不是你大爷了
正确的使用方式应该是:
//方案一:derwayList.splice(0, derwayList.length);//方案二:derwayList.length = 0;// 然后使用解构重新赋值derwayList.push(...newList)
对象Object重新赋值
对于对象不能直接重新赋值原因和数组是一样的,正确的赋值方式应该是
// 对象的响应式type res = {code: numberdata: string[]message: stringstate" />