首页 > 其他 > 详细

Vue的HOC实现

时间:2021-04-14 23:35:43      阅读:23      评论:0      收藏:0      [点我收藏+]

好吧,第一次听说Vue的Hoc:高阶组件。

看了一些案例,发现下面这个具有代表性:

//Parent.vue
import Base from .Base.vue;
// 使用hoc替代minxin
import HOC from .hoc;
const wrapBase = HOC(Base);

export default { 
  components: {
      Base,
      wrapBase
  },
  //...
}

HOC的代码
//完整hoc.js
export default function HOC(Base) {
    return {
      mounted () {
        console.log(我是HOC mounted log)
      },
      props: Base.props,
      render (h) {
        const slots = Object.keys(this.$slots)
          .reduce((acc, cur) => acc.concat(this.$slots[cur]), [])
          // 手动更正 context
          .map(vnode => {
            vnode.context = this._self //绑定到高阶组件上
            return vnode
          })

        return h(Base, {
          on: this.$listeners,
          props: this.$props,
          attrs: this.$attrs
        }, slots)
      }
    }
}
HOC可以实现对部分组件的全局拦截。
详情:https://zhuanlan.zhihu.com/p/181673485

Vue的HOC实现

原文:https://www.cnblogs.com/zhensg123/p/14659767.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!