比如封装了一个表单数据,props传入的是一个对象data,然后data里的每一项都绑定表单中的每一项,这势必涉及到双向绑定,如果是这样的话不是违反官方的规约了嘛?
所以说 props
传入的值就不应该参与双向绑定啊。需要和外部变量隔离,比如说在组件初始化后复制一份数据出来,赋值给当前组件的某一个变量(用到什么属性取什么属性,避免深浅拷贝问题),然后修改完毕之后再统一 $emit
到外部。
如果有修改并且是 Vue2
可以考虑使用 .sync 修饰符 这个方式。
或者 自定义组件v-model 来实现内外部变量的双向绑定(其实也是通过 props
+ $emit
)
主要就是避免一些值在你不知情的情况下被修改了,引发一些没有必要的Debug困扰。
确实是不推荐的, 对象看起来可以是因为对象是引用传递, 不是值传递, 因此你修改对象里面的内容不会被vue监听到, 看起来好像是修改了prop, 但实际上并没有
在这种情况下一般会在子组件用新的变量接收改变的值, 然后注册事件, 在父组件中修改