• Vue mixins VS React HOC


    vue混入mixins回顾:

    混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项

      • data合并策略:数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先;
      • 钩子函数合并策略:同名钩子函数将合并为一个数组,因此都将被调用。混入对象的钩子将在组件自身钩子之前调用;
      • 值为对象的选项合并策略: 例如 methodscomponents 和 directives,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对;

     

    React 高阶组件HOC:

    • 官方描述:高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧
    • HOC 自身不是 React API 的一部分,它是一种基于 React 的组合特性而形成的设计模式。具体而言,高阶组件是参数为组件,返回值为新组件的函数
    • HOC 不会修改传入的组件,也不会使用继承来复制其行为。相反,HOC 通过将组件包装在容器组件中来组成新组件。HOC 是纯函数,没有副作用

    下面例子: CommentList 和 BlogPost 不同 - 它们在 DataSource 上调用不同的方法,且渲染不同的结果。但它们的大部分实现都是一样的

    使用高阶组件HOC改造:

    步骤1: 编写一个创建组件函数 withSubscription 该函数将接受一个子组件作为它的其中一个参数,该子组件将订阅数据作为 prop。

    步骤2:编写组件CommentList:(data对应于上面 withSubscription 函数返回的组件的data)

    步骤3: 让组件CommentList有订阅功能:

    步骤4:使用包装好的组件:(other 属性就是CommentList组件的this.props.other)

     总结:

    vue 的混入就是给组件添加功能,冲突就用合并不一样的合并策略解决;但是组件还是原来的组件,不能对template模板复用;

    react 的 HOC, 其实就是通过函数,返回一个基本一样的组件,可以对组件的所有功能扩展,灵活性比较高;

     

     

  • 相关阅读:
    计算机组成原理期末第十章【计算部分】
    计算机组成原理期末第六章【计算部分】
    快速傅里叶变换总结
    Graph 题解
    NOI 赛前复习旧题 & 复习知识点计划
    Party 题解
    洛谷 P7054 [NWRRC2015]Graph 题解
    CF1542D Priority Queue 题解
    Codeforces Round #701 (Div. 2) E. Move and Swap
    常微分方程
  • 原文地址:https://www.cnblogs.com/vs1435/p/12979050.html
Copyright © 2020-2023  润新知