react hoc


一、概念

高阶组件的概念应该是来源于JavaScript的高阶函数:高阶函数就是接受函数作为输入或者输出的函数

高阶组件仅仅只是是一个接受组件作输入并返回组件的函数,通常情况下,实现高阶组件的方式有以下两种:

二、作用

1、属性代理(Props Proxy)

操作props ,抽象 state, 获得refs的引用,用其他元素包裹组件


2、反向继承(Inheritance Inversion)

渲染劫持

三、传参,柯里化

constHOCFactoryFactory =(...params) =>{

   return (WrappedComponent) =>{

         return class HOCextendsComponent { render() {return null } } 

 }

}

HOCFactoryFactory(params)(WrappedComponent)

四、名字

// https://github.com/mridgway/hoist-non-react-statics

import hoistNonReactStatics from 'hoist-non-react-statics'

getDisplayName = (WrappedComponent)=> {

  return WrappedComponent.displayName || WrappedComponent.name || 'Component'

}

createHoc = (name, hoc) => {

  return function wrap (WrappedComponent) {

    const Component = hoc(WrappedComponent)

  // 去除 WrappedComponent 中额外的静态变量

    hoistNonReactStatics(Component, WrappedComponent)

 //  修改 Component 的展示名字

    Component.displayName = `${name}(${getDisplayName(WrappedComponent)})`

    return Component

  }

}

参考:

https://juejin.im/post/5914fb4a0ce4630069d1f3f6

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在React官网文档学习React HOC,整个看了一遍还是云里雾里的,于是按照官网文档,自己动手实践一下。官网地...
    朝曦阅读 13,181评论 0 2
  • render props, 即函数作为子组件 术语 “render prop” 是指一种在 React 组件之间使...
    Never_er阅读 3,283评论 0 1
  • 高阶函数对组件的封装,譬如多个组件大部分相同,只是需要局部变化,可通过高阶函数来进行封装处理。
    郑无穷大阅读 2,615评论 0 0
  • 孩子最初来到世上就是白纸一张。成长就是涂抹的过程。父母的是孩子的第一任老师,父母的言传身教是对孩子最好的教育。想要...
    暮冬十六阅读 1,540评论 0 1
  • 两个人要分开了,在悲悯的月光下。 今天没有盛会,时间是灰色的。 风雨过后又晒干的泥路上,只有看着斑驳的脚印...
    Leo大喵阅读 1,661评论 0 1

友情链接更多精彩内容