在父组中直接给子组件传递对象,子组件再将对象赋与data中,这样由于是引用地址,子组件中数据改变时,父组件中的原数据也会改变,感觉挺方便的,无需emit回调,但大家都说不建议这样使用,这是为什么
在父组中直接给子组件传递对象,子组件再将对象赋与data中,这样由于是引用地址,子组件中数据改变时,父组件中的原数据也会改变,感觉挺方便的,无需emit回调,但大家都说不建议这样使用,这是为什么
组件是通过发布接口来通知使用者该如何使用该组件的。一般接口就是 props 输入和 event 输出,但是要约定其他形式的接口也未尝不可。比如可以约定一个对象引用,通过修改该对象的属性来实现数据交互。这个约定本身并没有问题,问题在于信息的同步上 —— 这个约定必须通过文档等明确的形式来说明,因为从使用上根本看不出来该组件会修改传入的对象属性。编辑器等工具也不会给出这样的提示,所以这个约定信息在程序的角度是“隐含”的,并不确定。这个不确定的信息在一个人,或者少数几个人,短期记忆中是可用的。但是我们的程序显然不应该只考虑短期存在。长期来看,如果你忘了,或者换了批人……这个信息可能就会“消失”,也许有人会去查文档,也许有人只是靠猜,也许会被当成一个 BUG …… “隐含”的信息丢失掉了,这才是危险的事情!
子组件中数据改变时,父组件中的原数据也会改变
props
向子组件传递数据,子组件可以通过 emit
向父组件传递数据;vuex
传递vue3的hooks就是这种方案,多个组件需要共用同个数据时就可以这样解决,其实也就是引用的同个对象
不要文档说什么就信什么,嵌套严重的情况下直接修改props最快,有啥不好维护的?写一坨父子通信的代码那才是不好维护