子组件可以通过props来使用父组件传过来的数据,但不能直接修改父组件传过来的数据,需要修改时则:
1。简单数据类型解决方案:
可以在子组件data中重新定义一个变量,改变指向,但是也只是针对简单数据类型,因为复杂数据类型栈存贮的是指针,
这样就可以愉快的更改传入的简单数据类型的数据啦!不会有任何报错,也不会影响父组件!
2。复杂数据类型解决方案:
复杂数据类型在栈中存贮的是指针,所以赋值给新的变量也会改变原始的变量值.那么应该咋整呢?
1.可以手动深度克隆一个复杂的数据出来,循环或者递归都行
数组深度克隆:
对象深度克隆:
函数深度克隆:
为什么函数可以直接赋值克隆?
由于函数对象克隆之后的对象会单独复制一次并存储实际数据,因此并不会影响克隆之前的对象。所以采用简单的复制“=”即可完成克隆。
2.Object.assign
只会对只是一级属性复制,比浅拷贝多深拷贝了一层而已,所以还是无法达到深度克隆的目的.