[vue中直接修改props中的值并未给出警告]
父组件
1 | <template> |
子组件
1 | <template> |
两个按钮,一个是改变值类型的prop,一个是改变引用类型的prop,你会发现,第一个按钮按了会报错,值不会被改变,但是按了第二个,值改变了,并且没有报错,那是因为你父组件传递过去的只是一个引用,说白了就是传了一个内存地址(指针)过去,子组件改变上面的值,并没有改变指针,所以系统认为他没有引起父组件的值改变,于是就没有报错提示了。
https://segmentfault.com/q/1010000015952520
Vue中props的详解https://www.jb51.net/article/161367.htm
在vue中子组件修改props引发的对js深拷贝和浅拷贝的思考https://www.cnblogs.com/hutuzhu/p/10119698.html
[js的对象和数组,引用类型的理解]https://segmentfault.com/a/1190000011155881
[vue 关于vue.set的学习笔记]
vue新手小白,在看vue文档的时候 发现vue关于 数组,对象值改变的与 ng有那么点不同。
官方表示
由于 JavaScript 的限制,Vue 不能检测以下变动的数组:
- 当你利用索引直接设置一个项时,例如:
vm.items[indexOfItem] = newValue
- 当你修改数组的长度时,例如:
vm.items.length = newLength
但是对于曾经使用ng的我来说,是不一样的。
比如:
vue 不能检测你直接根据数组的索引对数组的某个值修改。
Vue 不能检测对象属性的添加或删除。
但是它提供了另外的方法vue.set ,可以修改数组的值喝对象新增删除属性。
1 | <script> |