发布时间:2024-09-08 16:01
在开发中遇到了一个问题,将父组件的一个对象传给了子组件,在子组件操作该对象时,父组件的数据也受到了影响,这不是我所希望的
在 vue 中需要遵循单向数据流原则,props 是单项绑定的
当父组件的属性变化时,会传给子组件,但是子组件原则上是不可以修改传过来的值的。这是为了防止子组件无意修改了父组件的状态。
但是既然这样,我们为什么会遇到这种问题呢,这是因为:
为什么呢?
基本数据类型存储在栈中
引用数据类型存储在堆中
props 的传递是将数据浅拷贝下来,拷贝的引用数据类型其实指向对一个对象,拷贝在栈中,内容还是指向同一个堆地址,而基本数据类型本身就是在栈中,就会全部拷贝下来
当在子组件中改变基本数据类型时,父组件中的值不会改变,但是当改变引用类型数据时,因为父组件和子组件中的 props 保存的引用类型数据的地址时一样的,对应地址的值也一起改变
对引用数据类型而言:
浅拷贝相当于投屏,电脑屏幕使用的不一样,思维是一样的两者同步操作
深拷贝相当于双胞胎,长得一样,但是性格思想行为不一样
读论文《SNUNet-CD: A Densely Connected Siamese Network for Change Detection of VHR Images》
java面试总结(一)java面向对象、arraylist与linkedlist区别、高并发中的集合问题、JDK1.8新特性
匿名函数的表达式可以有多个吗python_python_lambda表达式(匿名函数)
MindSpore报错 `half_pixel_centers`=True only support in Ascend
pandas 作图 统计_绘图和可视化 Matplotlib,Pandas,Sseaborn, Pyecharts(数据蛙视频课摘录)...