记录今天在做vue练习时发现的一个问题:
当我修改子组件的值的时候,父组件的值也在跟着变
然后我就蒙圈了,不是说子组件不可以修改父组件的值的吗?
难道官方骗我?想想也不可能啊 ,,,以为是自己哪里的代码写错了,检查、重新写了十来分钟,发现还是一样的,看来没办法了就问下万能的度娘吧
然后度娘的结果是:vue父子组件传递数据的时候,浅拷贝会出现修改数据相互影响的情况
既然直接传值不可以,那就进行深拷贝吧,把要处理的数据深拷贝一份出来 之后操作深拷贝的数据即可
深拷贝的方法应该挺多,就比如说这个:JSON.parse(JSON.stringify(this.XX)) this.xx为父组件传来的数据。
既然是练习,前些天刚好用了lodash,那就继续用吧,(不能白装了这个插件啊)
我承认,我不知道它那个M是什么含义 我那完全是瞎猜的…
在项目中导入
官方推荐用下划线“_”命名
// 导入深拷贝这个插件
import _ from 'lodash'
使用:
cloneDeep:深拷贝的函数
需要传入你需要进行深拷贝的数据(对象)
它会返回一个对象,接收 然后操作这个深拷贝后的数据就可以了
this.updataRoleFrom = _.cloneDeep(row)
然后完美解决
小白记录,利于下次排查