先来看看React官方文档是怎么介绍HOC的:高阶组件是React中用于复用组件逻辑的一种高级技巧。HOC自身不是ReactAPI的一部分,它是一种基于React的组合特性而形成的设计模式。HOC它是一个模式,是一种思想,并不是只能在React中才能用。并不是说哪种技术新颖,就得使用哪一种。在Vue中,这种问题一般是用Mixin解决的。Mixin是一种通过扩展收集功能的方式,它本质上是将一个对象的属性拷贝到另一个对象上去。最初React也是使用Mixin的,但是后面发现Mixin在React中并不是一种好的模式,它有以下的缺点:。每个具名插槽都有其相应的property,例如v-slot:foo中的内容将会在this.$slots.foo中被找到。从而都被处理为默认插槽。解决方法也很简单,只需手动的将slot中的vnode的context指向为HOC实例即可。

在Vue中使用HOC模式的实现

在Vue中使用HOC模式的实现

在Vue中使用HOC模式的实现

在Vue中使用HOC模式的实现

在Vue中使用HOC模式的实现

在Vue中使用HOC模式的实现

在Vue中使用HOC模式的实现

在Vue中使用HOC模式的实现