Vant vue移动端框架踩坑-编辑table某行数据,表单未提交,table数据被改变
tableData:[]为列表数据的数组,form:{}是表单,编辑时只获取当前列的数据后直接存入form,比如列表第一行就是row=tableData[0],form=row,这样就可以直接编辑列表这行数据,但是编辑后表单不提交,或者提交,table数据都被改变
为什么呢?
忽略了内存中的深拷贝与浅拷贝问题
什么是深拷贝与浅拷贝?
深拷贝=>a=1 , b=a b复制了a的值,这个复制是真的复制出了一个新的值只属于b 浅拷贝=>a=1,b=a b没有复制a的值,只是在共用这个值。
解决方案
| 12 | //数据赋值 深拷贝代替浅拷贝this.form = JSON.parse(JSON.stringify(row)); |
//编辑获取表格中某行数据时,row为当前行数据
| -- | -----------------------------------------------------------------------------------
为什么会出现深拷贝和浅拷贝的现象?
=>基本数据和引用数据的问题
基本数据类型
变量和值存储在栈内存中
会新开辟一个空间给b用
引用数据类型
b复制a时,只是引用了同一个地址的值,b改变时会改变这个引用地址的值
参考文章www.cnblogs.com/echolun/p/7…