当修改表单时,表格的记录被同步修改了

在进行表单内容的修改时,表格中对应的记录也被修改了,如下所示

如果此时用户点击的时取消按钮的时候,那么展示的页面数据是修改后的,但这条数据本质上并没有发起后端请求进行修改,刷新页面后,又回到修改前的数据,给人一种点击取消按钮后,数据仍然被修改的假象,很明显,这并不符合业务场景。
查看代码,一般在点击修改按钮后,操作如下


问题就出现在this.formData = row
在js中,有两种复制,分别是深拷贝和浅拷贝,可以简单地理解为深拷贝复制的是实体,而浅拷贝则复制的是对象的地址,上面的这种情况就属于浅拷贝,因此导致表单修改时,对应的表格记录也被同步修改了,解决这种情况的方式就是把浅拷贝改为深拷贝,例如

this.formData = row更改为Object.assign(this.formData, row)
这样,就能解决了表格数据被同步修改的情况

小结:
以前听说过深拷贝和浅拷贝,具体是什么也不太了解,这次的项目倒是让自己切实体验到了深拷贝和浅拷贝的应用了。

posted @ 2022-05-13 11:32  itmacy  阅读(562)  评论(0)    收藏  举报