组件抽象问题请教,用 mixin 还是组合抽象

2021-11-23 08:30:03 +08:00
 ele828

我有若干组件,要给这些组件都新增一些公共的功能,应当使用 mixin 还是组合的来设计呢?

Mixin:

// 伪代码

ComponentA mixin SuperPower

ComponentB mixin SuperPower

ComponentC mixin SuperPower

然后直接使用 <ComponentA />, <ComponentB />, <ComponentC />

还是用组合来复用:


<SuperPower>
  <ComponentA />
</SuperPower>

<SuperPower>
  <ComponentB />
</SuperPower>

<SuperPower>
  <ComponentC />
</SuperPower>
1867 次点击
所在节点    JavaScript
13 条回复
Nillouise
2021-11-23 09:16:25 +08:00
同楼主同样有疑问,mixin 跟普通的继承、组合有什么不同?我学 dart ,研究来研究去,发现好像也就给多重继承加多了一个继承顺序。
4ark
2021-11-23 09:22:48 +08:00
你们用什么框架?还是不用?
其实目前来看这两种方案都不是最优的,建议了解下 React Hooks
TomVista
2021-11-23 09:24:02 +08:00
抄作业吧 react/vue hook
ele828
2021-11-23 09:26:43 +08:00
@4ark 内部框架,目前只有这两种做法。hooks 目前是不支持的
4ark
2021-11-23 09:29:49 +08:00
@ele828 感觉你们在走老路,既然 mixin 都抄了,那抄个 hooks 也行啊
ele828
2021-11-23 09:33:32 +08:00
@4ark 嗯,hooks 确实是一种解法,不过暂时可能比较难推进
zhuangzhuang1988
2021-11-23 09:34:19 +08:00
hook 也不好.
murmur
2021-11-23 09:36:32 +08:00
hooks 是每个变量都要自己去优化,框架不管了,比起这个我还是喜欢 vue 帮我优化这些
anjianshi
2021-11-23 09:46:09 +08:00
建议尽量不要用 mixin ,除非是加一些底层特性例如给每个组件加个通用的异常捕获啥的。
因为 mixin 不直观,一旦应用复杂起来很难维护,遇到问题也不容易找出到底是哪个组件加进来的哪个 mixin 导致的问题。
murmur
2021-11-23 09:48:28 +08:00
@anjianshi vue webpack 早就支持 mixin 打断点了,都什么年代了还在纠结调试问题
ele828
2021-11-23 10:22:38 +08:00
@anjianshi 我个人也是不倾向于用 mixin
darknoll
2021-11-23 10:55:59 +08:00
非常不喜欢 mixin ,后期维护的时候容易一头雾水
maplelin
2021-11-23 15:52:38 +08:00
不推荐 mixin ,感知性太差,mixin 中引入的方法和变量在引入 mixin 的组件中不可感知,一旦 mixin 发生错误,定位问题的麻烦程度直接翻倍

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

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

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

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

© 2021 V2EX