zoukankan      html  css  js  c++  java
  • 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, 其实就是通过函数,返回一个基本一样的组件,可以对组件的所有功能扩展,灵活性比较高;

     

     

  • 相关阅读:
    06.章节页面接口开发
    05.课程主页面三个接口开发
    python高级(六)——用一等函数实现设计模式
    python高级(五)—— python函数(一等对象)
    python高级(四)—— 文本和字节序列(编码问题)
    python高级(三)—— 字典和集合(泛映射类型)
    python高级——目录
    python高级(二)—— python内置序列类型
    python高级(一)—— python数据模型(特殊方法)
    python实现百度地图API获取某地址的经纬度
  • 原文地址:https://www.cnblogs.com/vs1435/p/12979050.html
Copyright © 2011-2022 走看看