vue2.0中子组件会修改props初始值

1.我用父组件向子组件传了一个props是一个数组,然后子组件中把props赋值给子组件中的data,然后修改data的时候,props竟然变了

2.图片描述

concat也试了,不行,用concat赋值完后比较子组件的list和props的initlist是false,但改变list后,props的initlist任然会变得和list一样

还有可能就是我数组中的元素是对象,虽然数组的指向不一样了,但其中的对象的指向还没改变

找到答案竟然不能自问自答,原因和上面说的一样,我的数组里面是对象,虽然数组指向变了,但里面的对象的指向还是相同的。改变赋值后的数组里面对象的值,初始数组里面对象的值一样会改变。解决方法就是把初始数组里面的对象属性进行深层拷贝

阅读 3.4k
2 个回答

父组件传过来的时候不加.sync,子组件修改不会影响父组件的数据。
深拷贝JSON.parse(JSON.stringify(this.initlist))这个感觉比较好用。

感觉这个地方设计的有点问题,如果父组件传过来的不是一个对象或者数组(比如说是单纯的字符串或者是数字)由于数据类型是基本类型而并非引用类型而导致不能修改,而传入的是一个完整对象的时候由于是引用类型他是可修改的,那如果我不希望这个值被修改这样的传值无形中增加了父子组件的耦合有什么办法可以传入对象让子组件无法修改,或者传入字符串让之组件可以修改

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题