vue动态prop绑定的是一个Object类型的变量,子组件可以修改其中的属性吗

在vue.js里因为单向传递的原因,直接子组件修改obj指向的对象肯定报错,但是改obj里某个属性就没事,但是这样做好吗,可以这样改吗。
比如:
父组件
clipboard.png
clipboard.png

子组件
clipboard.png

我在sf里面找了半天找到了一个答案是这么说的:

可以是可以,但是这样做会破坏flux单向数据流,而且很多时候无法触发prop数组的watcher,导致报错或者警告,正确的做法还是要用自定义事件的方式
相对比较方便的方式是,在父组件绑定子组件的属性时,添加.sync修饰符,然后在子组件中通过$emit('update:绑定的属性名',val)

我觉得这个说的比较详细一点,还是感谢各位给我的答案

阅读 11.9k
5 个回答

vue中是可以修改对象的属性的,这样做好不好看你自己的取舍吧,我觉得修改没关系

这样是不能修改父组件中data的,修改的只是子组件中的变量,相当于子组件copy了一份props传递过来的数据。

clipboard.png

正确的处理办法是:
1、使用this.$emit('xxxx'(父组件方法), '我是子元素传过来的参数')
2、使用vuex中的commit提交mutation或者dispatch分发action

不能修改,这是单向的,如果要反向修改父组件数据,可以参考组件间通信

推荐问题
宣传栏