React 高阶组件

雨点打透心脏的1/2处 2021-09-18 10:02 586阅读 0赞

定义

高阶组件(High Order Component, HOC) 输入:React 组件 => 输出:React 组件

使用场景

高阶组件的作用主要是用来加强组件,通过把基础组件拆分成很小的粒度,通过高阶组件进行增强并返回,以此提高复用性。 比如需要开发一个消息框,一开始只需要一个模态框能够显示消息就可以。后来需要多增加『确定』『取消』按钮组,这时候只要用高阶组件进行一次对基础模态框的增强就可以。避免了对原有组件进行修改,不影响原有组件的调用方。

实现思路

  • Props Proxy 属性代理
  • Inheritance Inversion 反向继承

Props Proxy 属性代理

核心思想是返回一个全新的组件,并在新组件中使用基础组件,方法是:

  • 增删改 props
  • 组合其他组件

    const BasicComponent = require(‘BasicComponent’);
    const Button = require(‘Button’);
    const React = require(‘react’);

    const buttonWrapperHOC = (params) => {

    1. return class HOCBasicComponent extend React.Component {
    2. render() {
    3. return (
    4. <div>
    5. <BasicComponent/>
    6. <div className='button-wrapper'>
    7. <Button value='确定'/>
    8. <Button value='取消'/>
    9. </div>
    10. </div>
    11. );
    12. }
    13. }

    }

    复制代码

Inheritance Inversion 反向继承

核心思想是返回一个继承了基础组件的组件

之所以被称为 Inheritance Inversion 是因为 WrappedComponent 被 Enhancer 继承了,而不是 WrappedComponent 继承了 Enhancer。在这种方式中,它们的关系看上去被反转(inverse)了。

可以进新的操作

  • 增删改 props
  • 修改render输出的DOM树(改起来不是很方便)

    const BasicComponent = require(‘BasicComponent’);
    const Button = require(‘Button’);
    const React = require(‘react’);

    const HOC = (params) => {

    1. return class HOCBasicComponent extend BasicComponent {
    2. render() {
    3. return super.render();
    4. }
    5. }

    }
    复制代码

发表评论

表情:
评论列表 (有 0 条评论,586人围观)

还没有评论,来说两句吧...

相关阅读

    相关 React-组件

    高阶组件是 React 中复用组件逻辑的一种技巧,高阶组件是一个函数,接收需要包装的组件,返回值为增强后的组件。 实现思路: 高阶组件内部创建一个类组件,在这个类组件中去提

    相关 React—HOC 组件

    基本概念 对组件中可以被重复使用的内容进行封装 什么是高阶组件 `高阶组件是一个函数`,接收是一个组件,返回值也是一个组件,这类组件我么叫做高阶组件(HOC);高

    相关 React组件

    高阶组件(HOC)是React里的高级技术为了应对重用组件的逻辑,HOC本质上不是React API的一部分。他是从React的组合性质中显露出来的模式 具体来说,一个高阶

    相关 react 组件

    高阶组件必须是一个函数,且必须返回一个组件,参数也必须接收一个组件 作用:能对传入的组件进行一些限定操作,可以使用生命周期等 ![在这里插入图片描述