请教一个 vue 父子组件通信的问题

2020-03-06 14:33:35 +08:00
 waiaan

在看一些源码的时候,经常会看到类似下面的写法:

   this.$children.someData=XXX;
   this.$parent.someMethod();
   ...

不是应该通过 prop 或 emit 来通信吗?

如 elmentui

https://github.com/ElemeFE/element/tree/dev/packages/carousel/src

2019 次点击
所在节点    Vue.js
6 条回复
zhzbql
2020-03-06 15:05:18 +08:00
使用 prop 或 emit 是为了降低耦合度,使组件更加通用。
当一个组件是高度定制化的,不考虑复用与公用的,直接调用父子组件更加直接与简单。
Vegetable
2020-03-06 15:08:03 +08:00
这就是在我(现在的我)爽和别人(未来的我)爽之间做出的抉择了。
GM
2020-03-06 15:16:28 +08:00
prop 或 emit 就像是套套,安全,无副作用,隔离性好,各种好。

就只有一个缺点:不那么爽。

this.$parent.someMethod() 之类的写法就像是不带套套,当时各种爽,事后,大家都懂。
Hoshinokozo
2020-03-06 15:23:20 +08:00
@GM 鬼才
shcolo
2020-03-06 15:42:24 +08:00
@GM #3 思维清晰,描述十分到位,令人容易理解
murmur
2020-03-06 15:44:47 +08:00
对于逻辑交互不复杂(表单表格行多,页面多不等于复杂),简化开发比严格的业务流程更重要
对于有基础的程序员,简单的东西可以用约定大于框架限制,不带套不要紧,约定你不射我不蹭就没事

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/650394

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX