一个高阶组件就是一个函数,这个函数接受一个组件作为输入,然后返回一个新的组件作为结果而且,返回的新组件拥有了输入组件所不具有的功能
- 例:
好处:
- 重用代码:提取出来逻辑,利用高阶组件的方式应用出去,就可以减少很多组件的重复代码
- 修改现有React组件的行为:有些现成React组件并不是开发者自己开发的,来自于第三方,希望修改里面的逻辑
高阶组件实现方式
代理方式的高阶组件
继承方式的高阶组件
高阶组件的显示名
- 增加“显示名”的方式就是给高阶组件类的
displayName
赋上一个字符串类型的值 - 以react-redux的connect为例,我们希望高阶组件的名字包含Connect,同时要包含参数组件WrappedComponent的名字
曾经的React Mixin
- React还有一个可以提供组件之间复用代码的功能叫Mixin
- 使用React.createClass创建出来的React组件SampleComponent,因为有mixins字段的存在,成员方法中就“混入”了ShouldUpdateMixin这个对象里的方法
- 而且作为一项设计原则,应该尽量把state从组件里抽取出来,尽量构建无状态组件,Mixins却反其道而行之,鼓励往React组件中加入状态,这也是一个很大的缺陷。