将el-table表格的数据显示在对话框的表单中,修改表单数据表格的数据也跟着变

将el-table表格的数据显示在对话框的表单中,修改表单数据表格的数据也跟着变

问题

点击el-table表格一行数据中的编辑按钮,将点击的这一行数据显示在对话框的表单里,表单里的数据只要被修改,无论对话框是点保存还是取消,表格的数据都变了

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

原因

是由于将表格那行数据 row 赋值给表单对象 this.editForm 造成的。

row是对象,this.editForm 也是对象,这是对象给对象赋值,对象属于引用数据类型。

基本数据类型赋值时赋的是‘值’,赋值后的两个变量之间并不会相互影响。

而引用数据类型(Object,Array)赋值时赋的是 ‘地址’ ,即赋值后两个变量引用的是栈中相同的一个内存地址,两变量之间会相互影响,其中一个变量的数据改变,另一个的数据也会跟着变。

赋值、浅拷贝和深拷贝的异同

在这里插入图片描述

JSON.parse(JSON.stringify())深拷贝原理: 通过JSON.stringify将对象转成JSON字符串,再通过JSON.parse()把JSON字符串解析成对象,这样新的对象就产生了,而且对象会开辟新的栈,实现深拷贝。

解决

这里只需要用到对象第一层的基本数据类型,所以可以通过使用浅拷贝 Object.assign({}, obj) 解决。

也可以用深拷贝 JSON.parse(JSON.stringify(obj)) 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值